Создание документа установка цен номенклатуры

Создание документа установка цен номенклатуры

Функционал расчета зависимых цен предусмотрен штатным функционалом 1С. Однако нередко возникают ситуации когда загрузка цен происходит автоматически без участия пользователя (загрузка из файлов EXCEL, обмен с сайтом и пр.).

Программно создать документ "Установка цен номенклатуры" не составляет большого труда, НО вот если после загрузки требуется рассчитать цены, которые зависят от загруженных. с этим уже возникают трудности автоматизации. По методике 1С предусмотрено лишь зайти в пользовательском режиме в созданный документ и пересчитать цены, на вкладке видов цен автоматически подберутся все зависимые цены. Весь штатный механизм заточен на клиентскую часть и связан с коллекцией данных формы документа.

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

Ложка дегтя: всё же присутствует потребность в небольшом вмешательстве в типовой код, в силу обращения в нём в элементам расчета как к данным формы. Изменения касаются общего модуля "УстановкаЦенСервер", но не содержат большой смысловой нагрузки, лишь проверка на соответствие типов.

Работа функционала протестирована на конфигурации Управление торговлей, редакция 11 (11.4.5.118) и была использована в работе начиная с релиза 11.4.2.109.

В поставке 2 файла:

1. Обработка по загрузке цен из таблицы на форме.

В главную процедуру создания документа установки цен можно передавать таблицу, аналогичную таблице на форме с колонками: Номенклатура (СправочникСсылка.Номенклатура), Вид цены (СправочникСсылка.ВидыЦен), Цена (Число). К примеру при загрузке из Excel файла поставщика можно получить такую таблицу и выполнить создание цен.

2. Текстовый файл общего модуля с исправлениями описанными комментариями:

//—>Начало исправления — создание документа установка цен на сервере

Читайте также:  Яндекс браузер перенос паролей на другой компьютер

Дата публикации 29.10.2018

Использован релиз 2.4.5

В программе можно создать документ установки цен из документа приобретения.

Для того чтобы сформировать цены по номенклатуре из последнего прихода, необходимо выполнить следующие действия:

  1. Открыть документ прихода.
  2. Нажать кнопку "Создать на основании" (рис. 1).
  3. Выбрать пункт меню "Установка цен номенклатуры".
  1. В обработке по установке цен номенклатуры будут отображены только позиции из накладной.
  2. Вы можете изменить состав видов цен, позиции номенклатуры и цены как при обычном формировании цен.
  3. По окончании редактирования нажмите кнопку "Провести и закрыть" (рис. 2).

личный блог

Часто при переходе на новую учетную систему приходится перенесить остатки товаров, справочники товаров, контрагентов и цены.

Если со справочниками и остатками проблем не возникает абсолютно никаких. Все легко грузится обработкой с диска ИТС «Загрузка данных из табличного документа». То с установкой цен, оказалось не все так просто.

Сразу оговорюсь, что все что будет описываться в данной статье актуально для Управление Торговлей 11 (далее УТ11) и Розница 2.2 (далее РА2). Проблем в том, что при проведении документа Оприходование товаров не регистрируется цена поставщика.

Что в принципе логично, так как товары вводимые в документ Ввод остатков (Оприходование товаров) как правило являются собственными товарами. Для того чтоб решить данную проблему и создать документ Установка цен номенклатуры пришлось написать небольшую обработку.

В модуле объекта обработки пропишем следующий код:

Функция СведенияОВнешнейОбработке() Экспорт

МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.ВводОстатков");

ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ЗаполнениеОбъекта");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Установка цен номенклатуры на основании ввода остатков");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Информация", "Создает документ установка цен номенклатуры на основании документа ввод остатков");
ПараметрыРегистрации.Вставить("ВерсияБСП", "2.2.2.48");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд,
"Установка цен номенклатуры",
"Заполнить",
"ВызовКлиентскогоМетода",
Ложь);
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

Читайте также:  Узнать место работы по паспортным данным

Возврат ПараметрыРегистрации;
КонецФункции

Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры

Далее в форме модуля формы размещаем код с логикой обработки. Оговорюсь что для УТ11 и РА2, код будет немного отличаться. В конце статьи выложу ссылки на скаачивания для каждой из учетных систем.

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт

Перем ВыбЗнач, НавигационнаяСсылка;

Массив = Новый Массив;
Массив.Добавить(Тип("СправочникСсылка.ВидыЦен"));

ОписаниеТиповК = Новый ОписаниеТипов(Массив);

Если ВвестиЗначение(ВыбЗнач, "Выберите цену заполнения", ОписаниеТиповК) Тогда

СоздатьУстановкуЦенНоменклатуры(ИдентификаторКоманды, ОбъектыНазначения[0], ВыбЗнач, НавигационнаяСсылка);

Если ЗначениеЗаполнено(НавигационнаяСсылка) Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = ‘Установка цен номенклауры’"),
НавигационнаяСсылка,
НСтр("ru=’Создан документ установка цен номенклатуры!’"),
БиблиотекаКартинок.Информация32);
Иначе
ПоказатьОповещениеПользователя(
НСтр("ru = ‘Документ установка цен номенклауры не создан’"),
ПолучитьНавигационнуюСсылку(ОбъектыНазначения[0]),
НСтр("ru=’Нет ни одной строки в табличной части товары. ‘"),
БиблиотекаКартинок.НеВыполнено);
КонецЕсли;
КонецЕсли;

&НаСервере
Функция СоздатьУстановкуЦенНоменклатуры(ИдентификаторКоманды, ОбъектДок, ВидЦены, Результат)

Если ОбъектДок.Товары.Количество() > 0 Тогда

Установка = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
Установка.Дата = ОбъектДок.Дата;
Установка.Ответственный = Пользователи.ТекущийПользователь();
Установка.Комментарий = "Документ создан автоматически на основании ввода остатков";
Установка.Согласован = Истина;

НоваяСтрокаВидЦены = Установка.ВидыЦен.Добавить();
НоваяСтрокаВидЦены.ВидЦены = ВидЦены;

ТаблицаТоваров = ОбъектДок.Товары.Выгрузить();
ТаблицаТоваров.Колонки.Добавить("ВидЦены");
ТаблицаТоваров.ЗаполнитьЗначения(ВидЦены, "ВидЦены");
Установка.Товары.Загрузить(ТаблицаТоваров);

Попытка
Установка.Записать(РежимЗаписиДокумента.Проведение);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
Установка.Записать();
КонецПопытки;
Результат = ПолучитьНавигационнуюСсылку(Установка);

Обработка готова. Теперь осталось включить использование внешних обработок и отчетов в разделе Администрирование -> Печатные формы, отчеты и обработки. И добавить и зарегистрировать созданную нами обработку и указать в каких документах обработка будет использоваться.

Далее заходим в документ оприходования товаров и видим что у нас появилась дополнительная кнопка, которая позволит нам создать желанный документ.

Ссылка на основную публикацию
Adblock
detector