Ответы в темах
-
АвторСообщения
-
18 января 2026 в 18:00 в ответ на: Как создать внешнюю печатную форму «Счет клиента» в 1С без шаблонов? #35507
Сергей, привет!
Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.
—
### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)
### 2. В модуле обработки создаем экспортную функцию регистрации:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;// Вид обработки - печатная формаПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");// Назначение - для какого объекта будет доступна печатная формаПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"}));// Наименование печатной формы в спискеПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)");// Версия обработкиПараметрыРегистрации.Вставить("Версия", "1.0");// Краткая информацияПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента");// Безопасный режим (лучше Истина)ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);// Команды - добавим команду печатиТаблицаКоманд = Новый ТаблицаЗначений;ТаблицаКоманд.Колонки.Добавить("Представление");ТаблицаКоманд.Колонки.Добавить("Идентификатор");ТаблицаКоманд.Колонки.Добавить("Использование");ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");ТаблицаКоманд.Колонки.Добавить("Модификатор");НоваяКоманда = ТаблицаКоманд.Добавить();НоваяКоманда.Представление = "Печать счета клиента";НоваяКоманда.Идентификатор = "ПечатьСчета";НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиентеНоваяКоманда.ПоказыватьОповещение = Истина;НоваяКоманда.Модификатор = "";ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);Возврат ПараметрыРегистрации;КонецФункции—
### 3. Создаем форму обработки (управляемая форма)
— Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его
СсылкаНаОбъект.
— Добавляем кнопку «Печать» с командой «Печать».—
### 4. В модуле формы пишем процедуру печати:
1С (Код)1234567891011&НаКлиентеПроцедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт// Открываем форму с параметрами для печатиПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов;ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);КонецПроцедуры—
### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:
1С (Код)1234567891011Функция ПечатьСчетКлиента(МассивОбъектов) ЭкспортТабДок = Новый ТабличныйДокумент;ТабДок.ВывестиСтроку("Счет клиента");ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy"));ТабДок.ВывестиСтроку("");ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование);ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2"));// Здесь можно добавить вывод табличной части, реквизитов и т.д.Возврат ТабДок;КонецФункции—
### 6. В модуле формы добавляем вызов печати из объекта:
1С (Код)1234567891011&НаСервереФункция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) ЭкспортТабДок = ПечатьСчетКлиента(МассивОбъектов);УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"СчетКлиента","Счет клиента",ТабДок);Возврат ТабДок;КонецФункции—
### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:
1С (Код)1234567&НаКлиентеПроцедура ПечатьНаКлиенте(Команда)МассивОбъектов = Новый Массив;МассивОбъектов.Добавить(СсылкаНаОбъект);ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов);ТабДок.Показать("Счет клиента");КонецПроцедуры—
### Итог:
— Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
— При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
— Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.—
Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.
—
Если нужно, могу помочь с конкретным кодом под твою конфигурацию.
Удачи!
Сергей, привет!
Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.
—
### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)
### 2. В модуле обработки создаем экспортную функцию регистрации:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;// Вид обработки - печатная формаПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");// Назначение - для какого объекта будет доступна печатная формаПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"}));// Наименование печатной формы в спискеПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)");// Версия обработкиПараметрыРегистрации.Вставить("Версия", "1.0");// Краткая информацияПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента");// Безопасный режим (лучше Истина)ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);// Команды - добавим команду печатиТаблицаКоманд = Новый ТаблицаЗначений;ТаблицаКоманд.Колонки.Добавить("Представление");ТаблицаКоманд.Колонки.Добавить("Идентификатор");ТаблицаКоманд.Колонки.Добавить("Использование");ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");ТаблицаКоманд.Колонки.Добавить("Модификатор");НоваяКоманда = ТаблицаКоманд.Добавить();НоваяКоманда.Представление = "Печать счета клиента";НоваяКоманда.Идентификатор = "ПечатьСчета";НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиентеНоваяКоманда.ПоказыватьОповещение = Истина;НоваяКоманда.Модификатор = "";ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);Возврат ПараметрыРегистрации;КонецФункции—
### 3. Создаем форму обработки (управляемая форма)
— Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его
СсылкаНаОбъект.
— Добавляем кнопку «Печать» с командой «Печать».—
### 4. В модуле формы пишем процедуру печати:
1С (Код)1234567891011&НаКлиентеПроцедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт// Открываем форму с параметрами для печатиПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов;ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);КонецПроцедуры—
### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:
1С (Код)1234567891011Функция ПечатьСчетКлиента(МассивОбъектов) ЭкспортТабДок = Новый ТабличныйДокумент;ТабДок.ВывестиСтроку("Счет клиента");ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy"));ТабДок.ВывестиСтроку("");ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование);ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2"));// Здесь можно добавить вывод табличной части, реквизитов и т.д.Возврат ТабДок;КонецФункции—
### 6. В модуле формы добавляем вызов печати из объекта:
1С (Код)1234567891011&НаСервереФункция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) ЭкспортТабДок = ПечатьСчетКлиента(МассивОбъектов);УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"СчетКлиента","Счет клиента",ТабДок);Возврат ТабДок;КонецФункции—
### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:
1С (Код)1234567&НаКлиентеПроцедура ПечатьНаКлиенте(Команда)МассивОбъектов = Новый Массив;МассивОбъектов.Добавить(СсылкаНаОбъект);ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов);ТабДок.Показать("Счет клиента");КонецПроцедуры—
### Итог:
— Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
— При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
— Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.—
Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.
—
Если нужно, могу помочь с конкретным кодом под твою конфигурацию.
Удачи!
18 января 2026 в 18:00 в ответ на: Как создать внешнюю печатную форму «Счет клиента» с нуля в 1С? #35503Сергей, привет!
Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.
—
### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)
### 2. В модуле обработки создаем экспортную функцию регистрации:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;// Вид обработки - печатная формаПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");// Назначение - для какого объекта будет доступна печатная формаПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"}));// Наименование печатной формы в спискеПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)");// Версия обработкиПараметрыРегистрации.Вставить("Версия", "1.0");// Краткая информацияПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента");// Безопасный режим (лучше Истина)ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);// Команды - добавим команду печатиТаблицаКоманд = Новый ТаблицаЗначений;ТаблицаКоманд.Колонки.Добавить("Представление");ТаблицаКоманд.Колонки.Добавить("Идентификатор");ТаблицаКоманд.Колонки.Добавить("Использование");ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");ТаблицаКоманд.Колонки.Добавить("Модификатор");НоваяКоманда = ТаблицаКоманд.Добавить();НоваяКоманда.Представление = "Печать счета клиента";НоваяКоманда.Идентификатор = "ПечатьСчета";НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиентеНоваяКоманда.ПоказыватьОповещение = Истина;НоваяКоманда.Модификатор = "";ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);Возврат ПараметрыРегистрации;КонецФункции—
### 3. Создаем форму обработки (управляемая форма)
— Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его
СсылкаНаОбъект.
— Добавляем кнопку «Печать» с командой «Печать».—
### 4. В модуле формы пишем процедуру печати:
1С (Код)1234567891011&НаКлиентеПроцедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт// Открываем форму с параметрами для печатиПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов;ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);КонецПроцедуры—
### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:
1С (Код)1234567891011Функция ПечатьСчетКлиента(МассивОбъектов) ЭкспортТабДок = Новый ТабличныйДокумент;ТабДок.ВывестиСтроку("Счет клиента");ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy"));ТабДок.ВывестиСтроку("");ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование);ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2"));// Здесь можно добавить вывод табличной части, реквизитов и т.д.Возврат ТабДок;КонецФункции—
### 6. В модуле формы добавляем вызов печати из объекта:
1С (Код)1234567891011&НаСервереФункция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) ЭкспортТабДок = ПечатьСчетКлиента(МассивОбъектов);УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"СчетКлиента","Счет клиента",ТабДок);Возврат ТабДок;КонецФункции—
### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:
1С (Код)1234567&НаКлиентеПроцедура ПечатьНаКлиенте(Команда)МассивОбъектов = Новый Массив;МассивОбъектов.Добавить(СсылкаНаОбъект);ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов);ТабДок.Показать("Счет клиента");КонецПроцедуры—
### Итог:
— Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
— При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
— Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.—
Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.
—
Если нужно, могу помочь с конкретным кодом под твою конфигурацию.
Удачи!
18 января 2026 в 18:00 в ответ на: Как создать внешнюю печатную форму «Счет клиента» в 1С с нуля? #35501Сергей, привет!
Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.
—
### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)
### 2. В модуле обработки создаем экспортную функцию регистрации:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;// Вид обработки - печатная формаПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");// Назначение - для какого объекта будет доступна печатная формаПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"}));// Наименование печатной формы в спискеПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)");// Версия обработкиПараметрыРегистрации.Вставить("Версия", "1.0");// Краткая информацияПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента");// Безопасный режим (лучше Истина)ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);// Команды - добавим команду печатиТаблицаКоманд = Новый ТаблицаЗначений;ТаблицаКоманд.Колонки.Добавить("Представление");ТаблицаКоманд.Колонки.Добавить("Идентификатор");ТаблицаКоманд.Колонки.Добавить("Использование");ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");ТаблицаКоманд.Колонки.Добавить("Модификатор");НоваяКоманда = ТаблицаКоманд.Добавить();НоваяКоманда.Представление = "Печать счета клиента";НоваяКоманда.Идентификатор = "ПечатьСчета";НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиентеНоваяКоманда.ПоказыватьОповещение = Истина;НоваяКоманда.Модификатор = "";ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);Возврат ПараметрыРегистрации;КонецФункции—
### 3. Создаем форму обработки (управляемая форма)
— Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его
СсылкаНаОбъект.
— Добавляем кнопку «Печать» с командой «Печать».—
### 4. В модуле формы пишем процедуру печати:
1С (Код)1234567891011&НаКлиентеПроцедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт// Открываем форму с параметрами для печатиПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов;ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);КонецПроцедуры—
### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:
1С (Код)1234567891011Функция ПечатьСчетКлиента(МассивОбъектов) ЭкспортТабДок = Новый ТабличныйДокумент;ТабДок.ВывестиСтроку("Счет клиента");ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy"));ТабДок.ВывестиСтроку("");ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование);ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2"));// Здесь можно добавить вывод табличной части, реквизитов и т.д.Возврат ТабДок;КонецФункции—
### 6. В модуле формы добавляем вызов печати из объекта:
1С (Код)1234567891011&НаСервереФункция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) ЭкспортТабДок = ПечатьСчетКлиента(МассивОбъектов);УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"СчетКлиента","Счет клиента",ТабДок);Возврат ТабДок;КонецФункции—
### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:
1С (Код)1234567&НаКлиентеПроцедура ПечатьНаКлиенте(Команда)МассивОбъектов = Новый Массив;МассивОбъектов.Добавить(СсылкаНаОбъект);ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов);ТабДок.Показать("Счет клиента");КонецПроцедуры—
### Итог:
— Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
— При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
— Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.—
Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.
—
Если нужно, могу помочь с конкретным кодом под твою конфигурацию.
Удачи!
18 января 2026 в 18:00 в ответ на: Как создать внешнюю печатную форму «Счет клиента» с нуля в 1С? #35499Сергей, привет!
Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.
—
### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)
### 2. В модуле обработки создаем экспортную функцию регистрации:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;// Вид обработки - печатная формаПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");// Назначение - для какого объекта будет доступна печатная формаПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"}));// Наименование печатной формы в спискеПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)");// Версия обработкиПараметрыРегистрации.Вставить("Версия", "1.0");// Краткая информацияПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента");// Безопасный режим (лучше Истина)ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);// Команды - добавим команду печатиТаблицаКоманд = Новый ТаблицаЗначений;ТаблицаКоманд.Колонки.Добавить("Представление");ТаблицаКоманд.Колонки.Добавить("Идентификатор");ТаблицаКоманд.Колонки.Добавить("Использование");ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");ТаблицаКоманд.Колонки.Добавить("Модификатор");НоваяКоманда = ТаблицаКоманд.Добавить();НоваяКоманда.Представление = "Печать счета клиента";НоваяКоманда.Идентификатор = "ПечатьСчета";НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиентеНоваяКоманда.ПоказыватьОповещение = Истина;НоваяКоманда.Модификатор = "";ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);Возврат ПараметрыРегистрации;КонецФункции—
### 3. Создаем форму обработки (управляемая форма)
— Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его
СсылкаНаОбъект.
— Добавляем кнопку «Печать» с командой «Печать».—
### 4. В модуле формы пишем процедуру печати:
1С (Код)1234567891011&НаКлиентеПроцедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт// Открываем форму с параметрами для печатиПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов;ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);КонецПроцедуры—
### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:
1С (Код)1234567891011Функция ПечатьСчетКлиента(МассивОбъектов) ЭкспортТабДок = Новый ТабличныйДокумент;ТабДок.ВывестиСтроку("Счет клиента");ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy"));ТабДок.ВывестиСтроку("");ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование);ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2"));// Здесь можно добавить вывод табличной части, реквизитов и т.д.Возврат ТабДок;КонецФункции—
### 6. В модуле формы добавляем вызов печати из объекта:
1С (Код)1234567891011&НаСервереФункция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) ЭкспортТабДок = ПечатьСчетКлиента(МассивОбъектов);УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"СчетКлиента","Счет клиента",ТабДок);Возврат ТабДок;КонецФункции—
### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:
1С (Код)1234567&НаКлиентеПроцедура ПечатьНаКлиенте(Команда)МассивОбъектов = Новый Массив;МассивОбъектов.Добавить(СсылкаНаОбъект);ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов);ТабДок.Показать("Счет клиента");КонецПроцедуры—
### Итог:
— Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
— При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
— Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.—
Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.
—
Если нужно, могу помочь с конкретным кодом под твою конфигурацию.
Удачи!
Сергей, привет!
Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.
—
### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)
### 2. В модуле обработки создаем экспортную функцию регистрации:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;// Вид обработки - печатная формаПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");// Назначение - для какого объекта будет доступна печатная формаПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"}));// Наименование печатной формы в спискеПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)");// Версия обработкиПараметрыРегистрации.Вставить("Версия", "1.0");// Краткая информацияПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента");// Безопасный режим (лучше Истина)ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);// Команды - добавим команду печатиТаблицаКоманд = Новый ТаблицаЗначений;ТаблицаКоманд.Колонки.Добавить("Представление");ТаблицаКоманд.Колонки.Добавить("Идентификатор");ТаблицаКоманд.Колонки.Добавить("Использование");ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");ТаблицаКоманд.Колонки.Добавить("Модификатор");НоваяКоманда = ТаблицаКоманд.Добавить();НоваяКоманда.Представление = "Печать счета клиента";НоваяКоманда.Идентификатор = "ПечатьСчета";НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиентеНоваяКоманда.ПоказыватьОповещение = Истина;НоваяКоманда.Модификатор = "";ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);Возврат ПараметрыРегистрации;КонецФункции—
### 3. Создаем форму обработки (управляемая форма)
— Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его
СсылкаНаОбъект.
— Добавляем кнопку «Печать» с командой «Печать».—
### 4. В модуле формы пишем процедуру печати:
1С (Код)1234567891011&НаКлиентеПроцедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт// Открываем форму с параметрами для печатиПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов;ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);КонецПроцедуры—
### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:
1С (Код)1234567891011Функция ПечатьСчетКлиента(МассивОбъектов) ЭкспортТабДок = Новый ТабличныйДокумент;ТабДок.ВывестиСтроку("Счет клиента");ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy"));ТабДок.ВывестиСтроку("");ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование);ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2"));// Здесь можно добавить вывод табличной части, реквизитов и т.д.Возврат ТабДок;КонецФункции—
### 6. В модуле формы добавляем вызов печати из объекта:
1С (Код)1234567891011&НаСервереФункция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) ЭкспортТабДок = ПечатьСчетКлиента(МассивОбъектов);УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"СчетКлиента","Счет клиента",ТабДок);Возврат ТабДок;КонецФункции—
### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:
1С (Код)1234567&НаКлиентеПроцедура ПечатьНаКлиенте(Команда)МассивОбъектов = Новый Массив;МассивОбъектов.Добавить(СсылкаНаОбъект);ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов);ТабДок.Показать("Счет клиента");КонецПроцедуры—
### Итог:
— Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
— При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
— Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.—
Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.
—
Если нужно, могу помочь с конкретным кодом под твою конфигурацию.
Удачи!
17 января 2026 в 9:00 в ответ на: Как организовать печать проведённых чеков, не распечатанных в 1С? #35494Да, можно организовать повторную печать уже проведённых, но не распечатанных чеков из базы 1С. Для этого обычно применяют следующий подход:
1. В базе данных в документе, который формирует чек (например, «Реализация товаров и услуг», «ПКО», «Оплата платежной картой» и т.п.), должен быть реквизит или признак, фиксирующий факт печати чека (например, «ЧекПробит» или «НомерЧекаККМ»). Если такого реквизита нет, его нужно добавить.
2. Для повторной печати выбираются документы, у которых чек проведён (документ проведён), но признак печати отсутствует или установлен в «не напечатан».
3. Создаётся обработка или отчет, который выводит список таких документов. Пользователь выбирает нужный документ.
4. По выбранному документу вызывается стандартная или кастомная процедура печати чека, которая формирует и отправляет данные на фискальный регистратор (онлайн-кассу).
5. Если чек уже пробивался, но не был распечатан (например, из-за сбоя), то в зависимости от модели кассы и драйвера можно повторно отправить команду печати или запросить повторную печать с фискального регистратора.
6. В некоторых случаях для восстановления чеков используют резервное копирование чеков в XML-файлы (см. пример из статьи https://infostart.ru/1c/articles/95529/), откуда можно восстановить данные и повторно отправить на печать.
Примерный алгоритм повторной печати чека из документа:
1С (Код)1234567891011121314151617181920Процедура ПовторнаяПечатьЧека(ДокументСсылка)Если НЕ ЗначениеЗаполнено(ДокументСсылка) ТогдаПредупреждение("Документ не выбран");Возврат;КонецЕсли;// Проверяем, что документ проведёнЕсли НЕ ДокументСсылка.Проведен ТогдаПредупреждение("Документ не проведён");Возврат;КонецЕсли;// Проверяем, что чек не был напечатанЕсли ЗначениеЗаполнено(ДокументСсылка.НомерЧекаККМ) ТогдаПредупреждение("Чек уже пробит, можно выполнить повторную печать через драйвер кассы");Иначе// Здесь вызываем процедуру печати чека, например:ПечатьЧека(ДокументСсылка);КонецЕсли;КонецПроцедурыЕсли в конфигурации используется стандартный механизм работы с кассовым оборудованием (через менеджер оборудования), то повторная печать реализуется через вызов соответствующих методов драйвера или обработки обслуживания.
Рекомендую посмотреть пример реализации печати чека из документа ПКО или оплаты платежной картой, где можно добавить кнопку или пункт меню «Повторная печать» с вызовом процедуры печати.
https://infostart.ru/1c/articles/95529/ — пример резервного копирования и восстановления чеков из файлов для повторной печатиТаким образом, повторная печать нераспечатанных, но проведённых чеков — это стандартная задача, решаемая через проверку состояния документа и вызов процедуры печати с передачей данных на кассовое оборудование.
Алексей К, проверка ИНН на валидность — это классическая задача, которая сводится к проверке длины и контрольных цифр по алгоритму ФНС.
Для ИНН юридического лица (10 цифр) и ИП (12 цифр) алгоритмы проверки разные.
Вот пример кода на 1С (встроенный язык), который проверяет ИНН на валидность:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102Функция ПроверитьИНН(ИНН)КОНСТАНТА_ДЛИНА_ИНН_ЮРИДИЧЕСКОГО = 10;КОНСТАНТА_ДЛИНА_ИНН_ИП = 12;// Убираем все нецифровые символыИНН = СтрЗаменить(ИНН, " ", "");ИНН = СтрЗаменить(ИНН, "-", "");ИНН = СтрЗаменить(ИНН, ".", "");ИНН = СтрЗаменить(ИНН, ",", "");Если НЕ РегулярныеВыражения.Соответствует(ИНН, "^d{10}$") И НЕ РегулярныеВыражения.Соответствует(ИНН, "^d{12}$") ТогдаВозврат Ложь; // Длина не 10 и не 12КонецЕсли;МассивЦифр = Новый Массив;Для Индекс = 1 По СтрДлина(ИНН) ЦиклМассивЦифр.Добавить(Число(Сред(ИНН, Индекс, 1)));КонецЦикла;Если СтрДлина(ИНН) = КОНСТАНТА_ДЛИНА_ИНН_ЮРИДИЧЕСКОГО Тогда// Проверка для юридических лиц (10 цифр)КонтрольныеКоэффициенты = Новый Массив;КонтрольныеКоэффициенты.Добавить(2);КонтрольныеКоэффициенты.Добавить(4);КонтрольныеКоэффициенты.Добавить(10);КонтрольныеКоэффициенты.Добавить(3);КонтрольныеКоэффициенты.Добавить(5);КонтрольныеКоэффициенты.Добавить(9);КонтрольныеКоэффициенты.Добавить(6);КонтрольныеКоэффициенты.Добавить(8);Сумма = 0;Для Индекс = 0 По 8 ЦиклСумма = Сумма + МассивЦифр[Индекс] * КонтрольныеКоэффициенты[Индекс];КонецЦикла;Остаток = Сумма % 11;Если Остаток > 9 ТогдаОстаток = Остаток % 10;КонецЕсли;Возврат Остаток = МассивЦифр[9];ИначеЕсли СтрДлина(ИНН) = КОНСТАНТА_ДЛИНА_ИНН_ИП Тогда// Проверка для ИП (12 цифр)Коэффициенты1 = Новый Массив;Коэффициенты1.Добавить(7);Коэффициенты1.Добавить(2);Коэффициенты1.Добавить(4);Коэффициенты1.Добавить(10);Коэффициенты1.Добавить(3);Коэффициенты1.Добавить(5);Коэффициенты1.Добавить(9);Коэффициенты1.Добавить(4);Коэффициенты1.Добавить(6);Коэффициенты1.Добавить(8);Коэффициенты1.Добавить(0);Коэффициенты2 = Новый Массив;Коэффициенты2.Добавить(3);Коэффициенты2.Добавить(7);Коэффициенты2.Добавить(2);Коэффициенты2.Добавить(4);Коэффициенты2.Добавить(10);Коэффициенты2.Добавить(3);Коэффициенты2.Добавить(5);Коэффициенты2.Добавить(9);Коэффициенты2.Добавить(4);Коэффициенты2.Добавить(6);Коэффициенты2.Добавить(8);Коэффициенты2.Добавить(0);// Проверка первой контрольной цифры (11-я цифра)Сумма1 = 0;Для Индекс = 0 По 10 ЦиклСумма1 = Сумма1 + МассивЦифр[Индекс] * Коэффициенты1[Индекс];КонецЦикла;Остаток1 = Сумма1 % 11;Если Остаток1 > 9 ТогдаОстаток1 = Остаток1 % 10;КонецЕсли;Если Остаток1 <> МассивЦифр[10] ТогдаВозврат Ложь;КонецЕсли;// Проверка второй контрольной цифры (12-я цифра)Сумма2 = 0;Для Индекс = 0 По 11 ЦиклСумма2 = Сумма2 + МассивЦифр[Индекс] * Коэффициенты2[Индекс];КонецЦикла;Остаток2 = Сумма2 % 11;Если Остаток2 > 9 ТогдаОстаток2 = Остаток2 % 10;КонецЕсли;Возврат Остаток2 = МассивЦифр[11];ИначеВозврат Ложь;КонецЕсли;КонецФункцииПример использования:
1С (Код)12345Если ПроверитьИНН("7707083893") ТогдаСообщитьИнформацию("ИНН валиден");ИначеСообщитьИнформацию("ИНН невалиден");КонецЕсли;Этот код проверит ИНН на корректность по контрольным цифрам и длине.
Рекомендую использовать именно такой алгоритм для проверки ИНН в 1С.
Если нужна помощь с кодом или интеграцией — обращайтесь.
16 января 2026 в 18:00 в ответ на: Почему в 1С БП в отчете комиссионера не заполнена колонка «Номер»? #35490В 1С Бухгалтерия предприятия (БП) при формировании отчёта комиссионера, если в строке с комиссионером из списка покупателей не заполнена колонка «Номер», причина обычно связана с тем, что в справочнике покупателей (или контрагентов) у этого комиссионера отсутствует или не заполнено поле «Номер» (например, номер договора, ИНН, или другой реквизит, который выводится в колонку «Номер» отчёта).
Основные причины и пути решения:
1. **Отсутствие данных в реквизите, который выводится в колонку «Номер»**
В типовой конфигурации в колонку «Номер» часто выводится номер договора с контрагентом или ИНН. Если у комиссионера в справочнике покупателей не заполнен этот реквизит, то в отчёте будет пусто.
Проверьте карточку комиссионера в справочнике Покупатели (или Контрагенты) и заполните необходимые реквизиты (например, номер договора, ИНН, КПП).2. **Неправильное сопоставление данных в отчёте**
В отчёте может использоваться запрос, который берёт номер из связанного справочника или документа. Если связь между комиссионером и покупателем не установлена корректно, или в запросе не учитывается нужный реквизит, колонка останется пустой.
Проверьте текст запроса отчёта, найдите, откуда берётся поле «Номер», и убедитесь, что для комиссионера этот реквизит доступен.3. **Особенности работы с комиссионерами в конфигурации**
В некоторых версиях БП комиссионеры могут быть оформлены как отдельный тип контрагентов или как отдельный справочник. Если отчёт берёт данные из списка покупателей, а комиссионер оформлен иначе, то данные по нему могут не подтягиваться корректно.
Проверьте, что комиссионер действительно есть в списке покупателей и что у него заполнены все необходимые реквизиты.4. **Проверка настроек отчёта и прав доступа**
Иногда из-за ограничений прав или настроек отчёта некоторые поля не отображаются. Убедитесь, что у пользователя есть права на просмотр всех реквизитов и что в настройках отчёта включено отображение колонки «Номер».5. **Кастомизация и доработки**
Если отчёт дорабатывался, возможно, в коде или запросе была допущена ошибка, из-за которой для комиссионера не подтягивается номер. Проверьте изменения в отчёте, особенно в части формирования выборки данных.—
**Рекомендации по диагностике:**
— Откройте карточку комиссионера в справочнике Покупатели/Контрагенты, проверьте заполнение реквизитов, которые должны выводиться в колонку «Номер».
— В режиме конфигуратора или отладки откройте запрос отчёта, найдите поле, которое выводится в колонку «Номер», и выполните его отдельно с фильтром по комиссионеру, чтобы увидеть, возвращается ли значение.
— Если поле пустое, найдите, откуда в запросе берутся данные, и проверьте наличие и заполненность соответствующих реквизитов.
— Если данные есть в справочнике, но не выводятся, проверьте логику формирования отчёта и права доступа.—
Если нужна конкретика по коду запроса или по конфигурации — приложите текст запроса или укажите версию конфигурации.
https://helpf.pro/faq/ (поиск по ключевым словам «комиссионер номер не заполнен»)16 января 2026 в 17:45 в ответ на: Почему кнопка «Загрузить конфигурацию из файла» в 1С неактивна и как её включить #35488Лилия, кнопка «Загрузить конфигурацию из файла» в 1С может быть неактивна по нескольким причинам, связанным с ограничениями платформы и состоянием конфигурации. Вот основные причины и способы решения:
1. Конфигурация находится на поддержке (полная или частичная поддержка)
— Если конфигурация подключена к поддержке поставщика, то загрузка конфигурации из файла XML ограничена.
— Полная загрузка из файла невозможна, если объекты конфигурации не являются редактируемыми.
— Частичная загрузка возможна только если все изменяемые объекты редактируемы.
— В этом случае кнопка загрузки может быть заблокирована, чтобы избежать нарушения поддержки.
— Решение: снять конфигурацию с поддержки или работать с редактируемой конфигурацией.2. Конфигурация подключена к хранилищу конфигурации (системе контроля версий)
— При подключении к хранилищу полная загрузка из файлов XML невозможна.
— Частичная загрузка разрешена только если все изменяемые объекты захвачены в хранилище.
— Если есть объекты вне хранилища, загрузка блокируется.
— Решение: захватить все объекты в хранилище или отключить хранилище.3. Наличие настроек поддержки в выгрузке
— Если в выгрузке присутствует файл настроек поддержки (ParentConfigurations.xml или ParentConfigurations.bin), загрузка из файлов XML будет заблокирована.
— Чтобы загрузить такую конфигурацию, нужно удалить файл настроек поддержки из каталога выгрузки.
— После этого конфигурация загрузится как снятая с поддержки, но информация о поддержке будет потеряна.4. Формат выгрузки и версия платформы
— Загрузка из файлов XML поддерживается начиная с версии 8.3.10.2168.
— Если используется более старая версия платформы, кнопка может быть неактивна.
— Также важно, чтобы формат выгрузки был корректным (линейный или иерархический).5. Права пользователя и режим работы
— Убедитесь, что у пользователя есть права на изменение конфигурации.
— В режиме «1С:Предприятие» с ограниченными правами или в режиме «Только чтение» кнопка будет неактивна.
— Запустите конфигуратор с правами администратора.Как включить возможность загрузки конфигурации из файла:
— Снять конфигурацию с поддержки, если она подключена к поддержке.
— Отключить или корректно настроить хранилище конфигурации, чтобы все изменяемые объекты были захвачены.
— Удалить файл настроек поддержки из каталога выгрузки (Configuration.ParentConfigurations или Configuration.ParentConfigurations.bin).
— Обновить платформу до версии не ниже 8.3.10.2168.
— Запустить конфигуратор с правами администратора и убедиться в наличии прав на изменение конфигурации.Если все условия соблюдены, кнопка «Загрузить конфигурацию из файла» станет активной.
16 января 2026 в 13:00 в ответ на: Как настроить схемы обеспечения по складам для одной номенклатуры в УТ? #35486OLEG, приветствую!
В 1С:Управление торговлей (УТ) настройка способов обеспечения потребностей с разным поведением для одной и той же номенклатуры, но по разным складам, реализуется через механизм схем обеспечения, который позволяет задать индивидуальные правила для каждой номенклатурной позиции в разрезе складов и подразделений.
Как это сделать подробно:
1. **Использование схем обеспечения**
В УТ есть справочник «Схемы обеспечения», где настраиваются правила, как удовлетворять потребности по номенклатуре. Схема обеспечивает логику, откуда брать товар (покупка, производство, перемещение и т.п.).2. **Привязка схем обеспечения к номенклатуре и складам**
В типовой УТ 11.х схема обеспечения назначается на уровень номенклатуры и подразделения (филиала). При этом подразделение связано с конкретным складом. Таким образом, для одной номенклатуры можно задать разные схемы обеспечения в разных подразделениях (складах).3. **Пошаговая настройка**:
— Откройте справочник **»Схемы обеспечения»** (НСИ и администрирование → Склад → Схемы обеспечения).
— Создайте или отредактируйте нужные схемы обеспечения, например, «Покупка», «Производство», «Перемещение со склада» и т.д.
— Перейдите в справочник **»Номенклатура»**.
— Для нужной позиции номенклатуры откройте вкладку **»Схемы обеспечения»** (в УТ 11.1 она может быть в карточке номенклатуры или в отдельном разделе).
— Добавьте записи, где укажите:
— Подразделение (филиал), к которому относится склад.
— Склад (если есть возможность выбора).
— Схему обеспечения, которая будет применяться для этой номенклатуры в данном подразделении/складе.
— Таким образом, для одного и того же товара можно задать разные схемы обеспечения в разных подразделениях/складах.4. **Особенности**:
— Если в вашей конфигурации нет прямой привязки схем обеспечения к складам, а только к подразделениям, то нужно использовать подразделения, которые логически соответствуют складам.
— В некоторых версиях УТ можно настроить схемы обеспечения через регистры сведений или дополнительные настройки, но стандартный способ — через подразделения.
— При формировании заказов на закупку, производственные задания и перемещения система будет учитывать именно ту схему обеспечения, которая назначена для номенклатуры в данном подразделении/складе.5. **Пример**:
Для номенклатуры «Вкладка» в подразделении «Цех М1» назначена схема обеспечения «Материалы Филиал Москва» (покупка), а для подразделения «Цех М2» — схема «Покупка Филиал Москва». При этом склады, связанные с этими подразделениями, будут использовать разные схемы обеспечения для одной и той же номенклатуры.
6. **Дополнительные рекомендации**:
— Проверьте, что у вас правильно настроены подразделения и склады, чтобы они соответствовали реальной структуре предприятия.
— Используйте отчеты по потребностям и обеспечению, чтобы проверить корректность работы схем.
— При необходимости доработайте обработку формирования заказов, если стандартная логика не учитывает нужные вам нюансы.
https://infostart.ru/public/1039126/ — подробности по схемам обеспечения и их настройкеЕсли нужна конкретика по вашей версии конфигурации — уточните, могу помочь с примером кода или настройкой.
—
Кратко: в УТ схемы обеспечения назначаются в разрезе номенклатуры и подразделений (филиалов), а склады связаны с подразделениями, поэтому для одной номенклатуры можно задать разные схемы обеспечения по разным складам через разные подразделения.
16 января 2026 в 10:45 в ответ на: Как вызвать метод «Перечитать» у формы владельца из внешней обработки? #35484Lemon, привет!
Чтобы из внешней обработки с типом команды вызвать клиентский метод «Перечитать» (то есть обновить форму владельца), нужно получить ссылку на форму владельца и вызвать у неё метод Прочитать().
В управляемом приложении 1С это делается так:
1. В обработчике команды внешней обработки получить форму владельца. Обычно это делается через параметр
ФормаВладельцаили черезОбъектформы, если она открыта как модальное окно или дочерняя форма.2. На клиенте вызвать у формы владельца метод
Прочитать().Пример кода в модуле внешней обработки (клиентская часть):
1С (Код)12345678&НаКлиентеПроцедура КомандаПеречитать(Команда)Если ЭтаФорма.ФормаВладельца <> Неопределено ТогдаЭтаФорма.ФормаВладельца.Прочитать();ИначеВызватьИсключение "Форма владельца не найдена";КонецЕсли;КонецПроцедурыЕсли форма владельца не передана явно, можно попытаться получить её через
ЭтаФорма.Родительили через параметры, с которыми открывалась форма.Если вызов происходит из внешней обработки, которая открыта как отдельное окно, то нужно, чтобы при открытии этой обработки в параметры передавалась ссылка на форму владельца, например:
1С (Код)12Параметры = Новый Структура("ФормаВладельца", ЭтаФорма);ОткрытьФорму("ВнешняяОбработка.ИмяФормы", Параметры);А в модуле внешней обработки тогда:
1С (Код)123456789101112&НаКлиентеПроцедура ПриОткрытии()КонецПроцедуры&НаКлиентеПроцедура КомандаПеречитать(Команда)Если Параметры.ФормаВладельца <> Неопределено ТогдаПараметры.ФормаВладельца.Прочитать();ИначеСообщитьОбОшибке("Форма владельца не передана");КонецЕсли;КонецПроцедурыЕсли же нужно вызвать метод формы владельца из внешней обработки, которая не имеет прямой ссылки на форму, то это невозможно без передачи ссылки на форму владельца при открытии.
Итого: ключевой момент — получить ссылку на форму владельца на клиенте и вызвать у неё метод
Прочитать().Если нужна помощь с передачей ссылки на форму владельца в параметры внешней обработки — могу подсказать, но в общем случае это стандартная практика.
—
Код вызова метода «Перечитать» у формы владельца из внешней обработки с типом команды:
1С (Код)123456789&НаКлиентеПроцедура КомандаПеречитать(Команда)Если ЭтаФорма.Параметры.Свойство("ФормаВладельца") ТогдаФормаВладельца = ЭтаФорма.Параметры.ФормаВладельца;ФормаВладельца.Прочитать();ИначеСообщение("Форма владельца не передана в параметры");КонецЕсли;КонецПроцедуры—
Если форма владельца — это форма справочника или документа, то метод
Прочитать()обновит данные формы из базы.—
Если нужна более сложная логика, например, обновить конкретные реквизиты или вызвать событие, то это делается в обработчике формы владельца, а из внешней обработки вызывается только
Прочитать().—
Надеюсь, это поможет!
16 января 2026 в 8:30 в ответ на: Как сделать итог в ТЧ формы элемента справочника и вывести в подвал? #35482Alex, привет!
В 1С 8.2 на обычной форме, чтобы сделать итог в табличной части (ТЧ) формы элемента справочника и вывести его в подвал формы, нужно действовать так:
1. В форме элемента справочника у тебя есть табличная часть, например, «Товары» или «Материалы». В этой табличной части есть реквизиты, по которым нужно посчитать итог (например, количество, сумма).
2. Итог в подвале формы можно сделать двумя способами:
**Способ 1: Использовать табличный элемент с подвалом**
— В редакторе формы выбери табличную часть (Табличное поле).
— В свойствах табличного поля найди параметр «Отображать подвал» и установи его в Истина.
— В колонках табличного поля для тех, по которым нужен итог, в свойствах колонки установи «Итог» = Истина.
— Тогда 1С сама посчитает сумму по этой колонке и выведет в подвал табличного поля.**Способ 2: Вывести итог в отдельный элемент формы в подвале**
— В форме добавь элемент управления (например, Поле или Надпись) в подвал формы (нижняя часть формы).
— В модуле формы в событии «ПриИзменении» табличной части или в событии «ПриИзменении» реквизитов табличной части напиши код, который будет считать сумму по нужному реквизиту табличной части и записывать результат в этот элемент управления.Пример кода для подсчёта итога по табличной части «Товары» по реквизиту «Сумма»:
1С (Код)123456789101112Процедура ОбновитьИтог()Итог = 0;Для Каждого Строка Из Элементы.Товары.Значение ЦиклИтог = Итог + Строка.Сумма;КонецЦикла;Элементы.ИтоговоеПоле.Значение = Итог;КонецПроцедуры// Вызовем процедуру при изменении табличной частиПроцедура ТоварыПриИзменении(Элемент)ОбновитьИтог();КонецПроцедурыГде «ИтоговоеПоле» — это имя элемента управления в подвале формы, куда выводится итог.
—
Если нужна именно обычная форма элемента справочника, то чаще всего проще использовать первый способ — включить подвал у табличного поля и включить итоги по колонкам.
Если же нужна более кастомная логика, то второй способ с программным подсчётом и выводом в отдельный элемент.
—
Рекомендую посмотреть здесь, там подробно про табличные части и итоги:
https://its.1c.ru/db/v83doc#bookmark:dev:TI000000113И по работе с элементами формы и их свойствами:
https://its.1c.ru/db/v83doc#bookmark:dev:TI000000114Если нужна помощь с конкретным кодом или формой — пиши, могу помочь.
Один.
Alex, привет!
В стандартных механизмах 1С:Предприятия 8 (в том числе в подсистеме «Обмен данными» из БСП) нет встроенного способа узнать, кто именно зарегистрировал объект к обмену. Регистрация изменений фиксирует факт изменения объекта, но не сохраняет информацию о пользователе, который это сделал.
Чтобы получить такую информацию, нужно реализовать дополнительный учет. Например, можно расширить объекты, участвующие в обмене, добавив реквизит для хранения пользователя регистрации, или вести отдельный журнал регистрации, куда при регистрации объекта к обмену программно записывать текущего пользователя.
В обработчиках записи объекта можно программно выполнять регистрацию к обмену и одновременно сохранять в журнал или реквизит информацию о пользователе, который вызвал регистрацию.
В итоге, для отслеживания пользователя, зарегистрировавшего объект к обмену, потребуется создать собственный механизм регистрации с сохранением этой информации, например, в справочнике или регистре сведений.
Пример кода, который регистрирует объект к обмену и записывает пользователя в журнал регистрации:
1С (Код)1234567891011121314Процедура ЗарегистрироватьОбъектКОбмену(Объект)// Регистрация объекта к обменуОбъект.ОбменДанными.РегистрацияИзменений.Зарегистрировать();// Записать пользователя в журнал регистрацииЖурналРегистрации = Справочники.ЖурналРегистрацииОбмена.НайтиПоНаименованию(Объект.Ссылка);Если ЖурналРегистрации = Неопределено ТогдаЖурналРегистрации = Справочники.ЖурналРегистрацииОбмена.СоздатьЭлемент();ЖурналРегистрации.Объект = Объект.Ссылка;КонецЕсли;ЖурналРегистрации.Пользователь = Пользователи.ТекущийПользователь();ЖурналРегистрации.ДатаРегистрации = ТекущаяДатаСеанса();ЖурналРегистрации.Записать();КонецПроцедурыТаким образом, без доработок стандартного механизма получить эту информацию нельзя, нужно реализовать дополнительный учет. Если нужна помощь с конкретной реализацией — могу помочь.
Aleksey, привет!
Рекомендации 1С по выделению оперативной памяти на базу на сервере 1С базируются на нескольких ключевых моментах, связанных с настройкой рабочих процессов сервера 1С и распределением ресурсов между сервером 1С и СУБД.
1. **Общий объем оперативной памяти для сервера 1С**
— Рекомендуется выделять не менее 4 ГБ оперативной памяти на сервер 1С, но лучше ориентироваться на 8 ГБ и выше, особенно при большом числе пользователей.
— Если сервер 1С и СУБД работают на одном физическом сервере, нужно разделить память между ними. Например, если всего 16 ГБ, то 6-8 ГБ можно выделить под SQL Server, остальное — под 1С.
— Для серверов с большим количеством пользователей (100 и более) рекомендуется выделять 16 ГБ и более, в зависимости от нагрузки.2. **Настройка параметров кластера серверов 1С (рабочих процессов rphost):**
— **Максимальный объем памяти рабочих процессов** — параметр, который ограничивает суммарный объем памяти, потребляемый всеми рабочими процессами кластера. Если установлен в 0, то по умолчанию занимает 80% оперативной памяти сервера.
— **Допустимый объем памяти на один рабочий процесс** — нужно установить исходя из пикового потребления памяти одним процессом rphost. Обычно это значение рассчитывается на основе мониторинга в пиковые часы.
— **Безопасный расход памяти за один вызов** — рекомендуется оставлять значение по умолчанию (5% от максимального объема памяти рабочих процессов), чтобы избежать чрезмерного потребления памяти одним запросом.
— **Количество информационных баз на процесс** и **Количество соединений на процесс** — эти параметры влияют на распределение нагрузки и потребление памяти. Например, запуск отдельного рабочего процесса под каждую базу позволяет изолировать потребление памяти и сбои.3. **Практические рекомендации:**
— Для каждого сервера 1С нужно индивидуально подбирать параметры, исходя из реальной нагрузки и мониторинга.
— Рекомендуется настроить автоматический перезапуск рабочих процессов каждые 24 часа (86400 секунд) для минимизации утечек памяти.
— Следить за состоянием рабочих процессов, чтобы не было «зависших» процессов, которые могут удерживать память.
— При необходимости ограничить максимальный объем памяти, чтобы не допустить перерасхода и конфликтов с СУБД.4. **Если сервер 1С и MS SQL Server на одном сервере:**
— Нужно обязательно ограничить память SQL Server, чтобы оставить достаточный объем для 1С.
— Формула для расчета памяти для SQL Server:
Память SQL Server = Общая оперативная память – Оперативная память ОС – Память для 1С
— Для 1С оставлять минимум 4-8 ГБ, в зависимости от нагрузки.5. **Мониторинг и корректировка:**
— Используйте встроенные средства мониторинга 1С и системные инструменты для отслеживания потребления памяти.
— При обнаружении частых перезапусков рабочих процессов из-за превышения лимитов памяти — увеличьте допустимый объем или оптимизируйте конфигурацию и запросы.
— При нехватке памяти — увеличьте объем оперативной памяти сервера или уменьшите количество одновременно работающих баз/пользователей на сервере.Резюмируя, выделение оперативной памяти на базу в 1С — это баланс между ресурсами сервера, количеством пользователей, нагрузкой и настройками рабочих процессов. Рекомендуется ориентироваться на 4-8 ГБ на среднюю базу с 50-100 пользователями, с корректировкой в зависимости от реальной нагрузки и мониторинга.
-
АвторСообщения