Архив рубрики: 1С Предприятие 8.3

1c 8.3 (8.2, 8.1) перенос остатков товаров

Ахтунг! На момент написания статьи данная обработка выгружает только остатки оптовых и НТТ складов. Потому что я спешил и большего мне не нужно было на этот момент. Если вам нужно выгружать розничные склады, пишите в комментариях, я сделаю доработку.

Тестировалась в УТП Украины. Простые формы. В УПП не работает, так как в ней нет функции «инициализироватьДокумент». Возможно, если будет не лень, доработаю, чтобы было независимо от конфигурации. При желании можете доработать под свою конфигурацию. самостоятельно, заменив эту функцию своим кодом. Так как обмен происходит через формат csv, обработка не зависит от платформы или установленных сторонних программ типа Майкрософт Офиса и т.д.

Полезно применять, например, если вы создали новую базу из старой без переноса документов. Перенесены только справочники и константы. И нужно до-внести остатки. Такой себе вариант свертки базы.

Как перенести в другую базу только справочники и константы без документов, а так же цены в том числе, ну и ещё пользователей со всеми их настройками, постараюсь в ближайшее время выложить.

Я выкладываю обработку бесплатно, но надеюсь, если она окажется полезной, Вы щелкните по кнопке соцсети, или обратите внимание на некоторые объявления.

Принцип работы :

  1. Выгружается файл csv по указанному складу с остатками на конец указанной даты. Файл содержит перечень кодов номенклатуры и остатков по каждой позиции.
  2. Загружается из файла в другую базу. Номенклатура совмещается по коду. При загрузке создаются два документа: Оприходование для положительных остатков и списание — для отрицательных. Склад в этих документах берется из реквизита «Склад» обработки. Дата документа устанавливается из реквизита «Дата остатков» обработки. Так как при загрузке создаются не только количества, но и суммы в документах оприходования и списания, нужно указать тип цен.
Внешний вид обработки переноса остатков товаров

После выполнения обработки открываются формы документа оприходования и списания. Они не записаны. Вы можете внести недостающие счета и заполнить другие реквизиты, а затем провести или записать эти документы. Или же просто закрыть без сохранения.

1с 8 УТП Украины как программно получить текущего пользователя

Имеется ввиду не тот пользователь, который ПользователиИнформационнойБазы.ТекущийПользователь();

А тот, который в справочнике «Пользователи»

В УТП Украины 1.2 это можно сделать, выполнив функцию глЗначениеПеременной(«глТекущийПользователь»);

или же выполнив такие строки кода, что подходит и для других типовых конфигураций 1С:

ТекушийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
ПользовательСсылка = Справочники.Пользователи.НайтиПоКоду(СокрЛП(ТекушийПользователь));

УТП Украины 1.3 не отображается закладка продаж по безналу в отчете о розничных продажах

В документе «Отчет о розничных продажах» будут отображаться вкладки «Оплата платежными картами» и «Оплата банковскими кредитами», если в настройке параметров учета установить соответствующие флажки на закладке «основные»: «Использовать оплату платежными картами» и «Использовать оплату банковскими кредитами» соответственно.

1с 8 в УТ 11 не открываются внешние обработки

В этой конфигурации роль «Полные права» не дает право открывать внешние отчеты и обработки. Поэтому следует ещё и добавить пользователю роль «Интерактивное открытие внешних отчетов и обработок»

После этого при следующем входе в систему пользователь увидит такое вот предупреждение:

Для некоторых это повод уйти на больничный, поэтому можете предупредить заранее, чтобы не пугались. Такая «пугалочка» появится только один раз. При последующих запусках вы её не увидите.

Как программно определить количество строк и столбцов Excel

Пример делаю на 1с 8, вместе с подключением и отключением 

Попытка
Эксель = Новый COMОбъект(«Excel.Application»);
Исключение
Предупреждение(«MS Excel не установлен на компьютере!»,10);
Возврат;
КонецПопытки;
Состояние(«Подключение к EXCEL»,50);
Книга = Эксель.WorkBooks.Open(Путь);
Лист = Книга.WorkSheets(1);
КолСтрок=Лист.Cells(1,1).SpecialCells(11).Row;
КолКолонок = Лист.Cells(1,1).SpecialCells(11).Column;

………………………

//Шо то робим

………………………

//Сохраняем результаты
Эксель.ActiveWorkbook.Save();
//выходим из Excel
Эксель.Quit();

1с 8 Почему спрашивает «Данные были изменены», если ничего не менялось в форме?

Возможно у кнопки, которую нажимали, или у реквизита, который редактировали, установлен флажок «изменяет данные». Он специально предназначен, чтобы установить модифицированность в «истина», если система сама не может определить, изменяет ли данные элемент.

Обычно такое возникает, если делаются различные вспомогательные формы, но вид формы — форма справочника или документа, а не произвольная форма. Мне например больше нравится, чтобы форма была формой справочника или документа — потому что тогда имеется доступ к реквизитам соответствующего объекта, чего в произвольной форме не будет.

Снимаем флажок, и можно закрывать форму, без сохранения элемента справочника. 

1с 8 Почему в СКД во вложенном запросе не видно параметров связи в настройке схемы

Нечасто делаю отчеты на СКД, тем более с использованием вложенных схем. И порой очень раздражает когда делаешь вложенную схему, видишь, что в другом подобном отчете всё есть, а в моем нету полей связи родительского отчета со вложенным.

Нет полей вложенного запроса для связи

Попробуем разобраться. И оставляю себе напоминалочку, так как нервы не железные.

1 Заходим в схему вложенного отчета

рис. Открываем схему вложенного отчета

2 Открываем конструктор запроса

3 Переходим на закладку «Компоновка данных» и переносим стрелками из левой в правую часть те реквизиты, по которым хотим установить связь.

Жмем Ок.

4 Открываем снова настройки связей схемы

Нужные поля для связи появились

5 Но вот в правом значении дает выбирать только элементы

6 Поэтому нажимаем крестик

7 Выбираем «Поле компоновки данных

8 Выбираем нужное поле родителя для связи с вложенным запросом

9 Настроить отбор в родительском запросе, став мышью на вложенный отчет в группировках, чтобы данные вложенного запроса ограничивались связью.

1С 8 Как заполнить значения при добавлении новой строки в табличную часть

Нужно вставить обработчик события самой табличной части, который называется «При начале редактирования». В нем есть параметр «Новая строка», что дает нам возможность выполнять некоторые действия только при добавлении новой строки. При этом сама строка уже существует, 

Процедура СоставПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока тогда
текСтрока = ЭлементыФормы.Состав.ТекущиеДанные;
Если не текСтрока = неопределено тогда
текСтрока.ИсточникДанных = перечисления.СпособПолучения.ИзТабличнойЧасти;
КонецЕсли;
КонецЕсли;
КонецПроцедуры

в отличии от обработчика «ПередНачаломДобавления», который можно использовать с тем же успехом, но код будет другой

Примерно так:

СтандартнаяОбработка = ложь;

нов = Состав.Добавить();

нов.ИсточникДанных = перечисления.СпособПолучения.ИзТабличнойЧасти;

То бишь, сами добавляем строку и устанавливаем параметры, что мне меньше нравится. Я приверженец использования типовых механизмов насколько это возможно.

1C 8 как округлять до заданной числом точности, например 0.01

мОкруглятьДо = 0,01;

Цел(ВыборкаСотрудник.Сумма/мОкруглятьДо)*мОкруглятьДо;//округляет до сотых

мОкруглятьДо = 0,1;

Цел(ВыборкаСотрудник.Сумма/мОкруглятьДо)*мОкруглятьДо;//округляет до десятых