|
1С КА2 акт списания материалов dovenok, Prog_man, Garykom, Мультук, Krendel, U4Me2, scanduta, Злопчинский, shuhard, KJlag, azt-yur, nick86, Климов Сергей, p-soft, paramedic, DemonShinji2, CepeLLlka, crotnn, Михаил Козлов, Вадя, Доминошник, sto-alex, 2S, kir-g, ЕRPe, JeHer, Джордж1, d4rkmesa, s_trikozin, RomanYS, Верещагин, maxar, Pahom
| ☑ | ||
|---|---|---|---|---|
|
0
dovenok
07.05.26
✎
07:58
|
Добрый день! Понадобилось сделать в 1с КА 2 , печатную форму как в бухгалтерии, акт списания материалов.
Подскажите после проведения месяца из какого регистра подтягивать цену в акт списания? у модуля обработки такой код: Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); ПараметрыРегистрации.Вставить("Наименование", "Акт на списание материалов"); ПараметрыРегистрации.Вставить("Версия", "3.4"); ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь); Назначения = Новый Массив; Назначения.Добавить("Документ.ВнутреннееПотреблениеТоваров"); Назначения.Добавить("Документ.ВнутреннееПотребление"); ПараметрыРегистрации.Вставить("Назначение", Назначения); Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить("Представление"); Команды.Колонки.Добавить("Идентификатор"); Команды.Колонки.Добавить("Использование"); Команда = Команды.Добавить(); Команда.Представление = "Акт на списание материалов"; Команда.Идентификатор = "АктНаСписаниеМатериалов"; Команда.Использование = "ВызовСерверногоМетода"; ПараметрыРегистрации.Вставить("Команды", Команды); Возврат ПараметрыРегистрации; КонецФункции Процедура Печать( МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт Если УправлениеПечатью.НужноПечататьМакет( КоллекцияПечатныхФорм, "АктНаСписаниеМатериалов") Тогда ТабДок = ПечатьАкта(МассивОбъектов); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "АктНаСписаниеМатериалов", "Акт на списание материалов", ТабДок); КонецЕсли; КонецПроцедуры Функция ПечатьАкта(МассивОбъектов) Экспорт ТабДок = Новый ТабличныйДокумент; ТабДок.ИмяПараметровПечати = "АктНаСписаниеМатериалов"; Макет = ПолучитьМакет("АктНаСписаниеМатериалов"); Для Каждого Док Из МассивОбъектов Цикл // ===================================================== // ШАПКА // ===================================================== Область = Макет.ПолучитьОбласть("Шапка"); Орг = Док.Организация; // ===================================================== // НАИМЕНОВАНИЕ ОРГАНИЗАЦИИ // ===================================================== Наим = ""; Если ЗначениеЗаполнено(Орг.НаименованиеПолное) Тогда Наим = Орг.НаименованиеПолное; Иначе Наим = Орг.Наименование; КонецЕсли; // ===================================================== // АДРЕС // ===================================================== Адрес = ""; Попытка Адрес = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта( Орг, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации, Док.Дата); Исключение КонецПопытки; Если НЕ ЗначениеЗаполнено(Адрес) Тогда Попытка Адрес = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта( Орг, Справочники.ВидыКонтактнойИнформации.ФактическийАдрес, Док.Дата); Исключение КонецПопытки; КонецЕсли; // ===================================================== // БАНКОВСКИЕ РЕКВИЗИТЫ // ===================================================== БанкСтрока = ""; Попытка Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | БанковскиеСчета.НомерСчета КАК НомерСчета, | БанковскиеСчета.Банк КАК Банк, | БанковскиеСчета.Банк.Код КАК БИК |ИЗ | Справочник.БанковскиеСчета КАК БанковскиеСчета |ГДЕ | БанковскиеСчета.Организация = &Организация"; Запрос.УстановитьПараметр("Организация", Орг); Результат = Запрос.Выполнить().Выбрать(); Если Результат.Следующий() Тогда БанкСтрока = "р/с " + СокрЛП(Результат.НомерСчета) + ", " + СокрЛП(Строка(Результат.Банк)) + ", БИК " + СокрЛП(Результат.БИК); КонецЕсли; Исключение БанкСтрока = ""; КонецПопытки; // ===================================================== // ОБЩИЙ ТЕКСТ ОРГАНИЗАЦИИ // ===================================================== ПолныйТекстОрганизации = Наим; Если ЗначениеЗаполнено(Адрес) Тогда ПолныйТекстОрганизации = ПолныйТекстОрганизации + Символы.ПС + "Адрес: " + Адрес; КонецЕсли; Если ЗначениеЗаполнено(БанкСтрока) Тогда ПолныйТекстОрганизации = ПолныйТекстОрганизации + Символы.ПС + "Банковские реквизиты: " + БанкСтрока; КонецЕсли; // ===================================================== // ВЫВОД В МАКЕТ // ===================================================== Попытка Область.Параметры.ОрганизацияПолныйТекст = ПолныйТекстОрганизации; Исключение КонецПопытки; Попытка Область.Параметры.Номер = Док.Номер; Исключение КонецПопытки; Попытка Область.Параметры.Дата = Формат(Док.Дата, "ДЛФ=DD"); Исключение КонецПопытки; ТабДок.Вывести(Область); // ===================================================== // ЗАГОЛОВОК // ===================================================== ТабДок.Вывести( Макет.ПолучитьОбласть("Заголовок")); // ===================================================== // ШАПКА ТАБЛИЦЫ // ===================================================== ТабДок.Вывести( Макет.ПолучитьОбласть("ШапкаТаблицы")); // ===================================================== // СТРОКИ // ===================================================== ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); Итого = 0; НомерСтроки = 0; Для Каждого Стр Из Док.Товары Цикл НомерСтроки = НомерСтроки + 1; // ================================================= // ПОЛУЧЕНИЕ СЕБЕСТОИМОСТИ // ================================================= ДанныеСтоимости = ПолучитьСтоимостьСписания( Док.Ссылка, Стр.Номенклатура); СуммаСтроки = ДанныеСтоимости.Сумма; Если Стр.Количество <> 0 Тогда Цена = СуммаСтроки / Стр.Количество; Иначе Цена = 0; КонецЕсли; // ================================================= // ВЫВОД СТРОКИ // ================================================= Попытка ОбластьСтрока.Параметры.Номер = НомерСтроки; Исключение КонецПопытки; Попытка ОбластьСтрока.Параметры.Номенклатура = Стр.Номенклатура; Исключение КонецПопытки; Попытка ОбластьСтрока.Параметры.Единица = Стр.Номенклатура.ЕдиницаИзмерения; Исключение КонецПопытки; Попытка ОбластьСтрока.Параметры.Количество = Стр.Количество; Исключение КонецПопытки; Попытка ОбластьСтрока.Параметры.Цена = Окр(Цена, 2); Исключение КонецПопытки; Попытка ОбластьСтрока.Параметры.Сумма = Окр(СуммаСтроки, 2); Исключение КонецПопытки; Итого = Итого + СуммаСтроки; ТабДок.Вывести(ОбластьСтрока); КонецЦикла; // ===================================================== // ИТОГ // ===================================================== Область = Макет.ПолучитьОбласть("Итог"); Попытка Область.Параметры.ИтогоСумма = Окр(Итого, 2); Исключение КонецПопытки; Попытка Область.Параметры.ИтогоПрописью = ЧислоПрописью( Итого, "Л=ru_RU", "рубль,рубля,рублей,м,копейка,копейки,копеек,ж"); Исключение КонецПопытки; ТабДок.Вывести(Область); // ===================================================== // ПОДПИСИ // ===================================================== ТабДок.Вывести( Макет.ПолучитьОбласть("Подписи")); КонецЦикла; ТабДок.АвтоМасштаб = Истина; Возврат ТабДок; КонецФункции Функция ПолучитьСтоимостьСписания( ДокСсылка, Номенклатура) Экспорт Сумма = 0; Количество = 0; Попытка Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СебестоимостьТоваров.Количество КАК Количество, | СебестоимостьТоваров.Стоимость КАК Стоимость |ИЗ | РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров |ГДЕ | СебестоимостьТоваров.Регистратор = &Документ | И СебестоимостьТоваров.Номенклатура = &Номенклатура"; Запрос.УстановитьПараметр("Документ", ДокСсылка); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Количество = Количество + Результат.Количество; Сумма = Сумма + Результат.Стоимость; КонецЦикла; Исключение Сумма = 0; Количество = 0; КонецПопытки; Возврат Новый Структура( "Количество,Сумма", Количество, Сумма); КонецФункции |
|||
|
1
Garykom
гуру
07.05.26
✎
08:30
|
1. Что такое "проведение месяца"?
2. Какую именно цену и для чего? 3. Портянка эта какой смысл выкладывать? |
|||
|
2
dovenok
07.05.26
✎
08:34
|
ну бухгалтерия закрывает месяц, потом высчитывается себестоимость продукции точная, ее нужно вывести в акт списания материалов(печатная форма) , но я не понимаю откуда брать эти данные.
ошибка в этом куске судя по всему: Функция ПолучитьСтоимостьСписания( ДокСсылка, Номенклатура) Экспорт Сумма = 0; Количество = 0; Попытка Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СебестоимостьТоваров.Количество КАК Количество, | СебестоимостьТоваров.Стоимость КАК Стоимость |ИЗ | РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров |ГДЕ | СебестоимостьТоваров.Регистратор = &Документ | И СебестоимостьТоваров.Номенклатура = &Номенклатура"; Запрос.УстановитьПараметр("Документ", ДокСсылка); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Количество = Количество + Результат.Количество; Сумма = Сумма + Результат.Стоимость; КонецЦикла; Исключение Сумма = 0; Количество = 0; КонецПопытки; Возврат Новый Структура( "Количество,Сумма", Количество, Сумма); КонецФункции |
|||
|
3
Garykom
гуру
07.05.26
✎
08:44
|
(2) Ошибка не в программном коде, ошибка в ДНК
Почему нельзя найти типовой отчет/форму которые показывают нужную цену? И посмотреть откуда оно берет цифры? Через отладку - замер производительности например Банально поиском и просмотром текстов запросов Для удобства замера запускать с "Режим отладки" или поставить галку для фоновых |
|||
|
4
shuhard
07.05.26
✎
09:00
|
(0)[ после проведения месяца из какого регистра подтягивать цену в акт списания? у]
два варианта настройки: - фиксированная цена из прайс-листа - Рг себестоимость товаров |
|||
|
5
Мультук
гуру
07.05.26
✎
09:08
|
(0)
Автор, объясните пожалуйста, Что вы пытаетесь предотвратить? Это печатная форма. Не синхрофазатрон. С вашим опытом попытка/исключение будет только вредить. В первую очередь вам, а затем пользователям, ибо вместо явной ошибки они получат нолики см (2), там где вовсе могут быть миллионы и будут вас бить.
Попытка
ОбластьСтрока.Параметры.Номер = НомерСтроки;
Исключение
КонецПопытки;
|
|||
|
6
Garykom
гуру
07.05.26
✎
09:48
|
(5) У ТС спрашиваешь? Спроси сразу у ИИшки которая это выдала
ЗЫНу не сделает человек такие комменты Да еще несколько раз // ================================================= // ПОЛУЧЕНИЕ СЕБЕСТОИМОСТИ // ================================================= |
|||
|
7
dovenok
07.05.26
✎
09:57
|
(6) да через ии прогонял, нашел я только тчет по себестоимости где отображается после запроса средняя цена, но так и не понял как оттуда ее выдрать в мою печатную форму
|
|||
|
8
paramedic
07.05.26
✎
10:07
|
(7) Ну есть же стандартная печатная форма ТОРГ-16 (Акт о списании товаров). Что, так сложно взять ее за основу и просто перезанести получаемые данные на свою форму?
В ней все есть - и цены по себестоимости и цены по виду цен... |
|||
|
9
dovenok
07.05.26
✎
10:19
|
(8) они списывают как внутреннее потребление, там такой формы нет, и в самом документе потребления ни цен ничего
|
|||
|
10
dovenok
07.05.26
✎
10:20
|
(8) если что комплексная автоматизация 2 , конфигурация. А они хотят как в бухгалтерии что бы было
|
|||
|
11
Михаил Козлов
07.05.26
✎
10:34
|
(10) Если как в бухгалтерии, возьмите из проводок БУ (если ведете его в КА).
|
|||
|
12
paramedic
07.05.26
✎
10:55
|
(9) Ну какая разница, какой документ. И там, и там есть Товары.
Еще раз: возьмите код формирования данных для ТОРГ-16 из Списания и скормите ему Товары из Внутреннего потребления. Единственное, что надо сделать - оставить ветку, где печать цен по себестоимости. |
|||
|
13
dovenok
07.05.26
✎
12:17
|
(11) не подскажете как конкретней цену оттуда достать?
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |