Использование флажков в динамических списках
Разработка - Механизмы платформы 1С
Итак, исходные данные:
Для примера нам понадобится любая конфигурация (хоть созданная с нуля) со справочником "Номенклатура". Остальное не важно.
Подготавливаем галочки. К слову, они могут быть любыми, если вам не нравятся стандартные флажки создайте свои. Главное, чтобы первой стояла картинка с флажком, а потом уже без флажка. У меня получился вот такой файл:
![]()
Создаем внешнюю обработку. Размещаем на ней реквизит с типом "Динамический список" и устанавливаем галочку "Произвольный запрос"

Нажимаем на "Открыть" рядом с настройкой списка и устанавливаем запрос. Запрос выглядит следующим образом:
ВЫБРАТЬ
Номенклатура.Ссылка,
Номенклатура.Ссылка В (&ВыбраннаяНоменклатура) КАК Пометка
ИЗ
Справочник.Номенклатура КАК Номенклатура
Добавляем на форму список и его реквизиты "Пометка", "Ссылка"

В поле "Пометка" устанавливаем следующие свойства элемента:
- Вид - Поле картинки
- Положение заголовка - Нет
- Картинка значений - Наша картинка с галочками
- Гиперссылка ячейки - Да
Для элемента формы "Список" установите событие "Выбор" с названием процедуры "СписокВыбор".
Скопируйте код ниже в модуль формы:
&НаКлиенте
Перем ВыбраннаяНоменклатура; //Массив, хранящий отмеченную галочками номенклатуру для отображения в списке
&НаКлиенте
Процедура ПриОткрытии(Отказ)
//Инициализация массива
ВыбраннаяНоменклатура = Новый Массив;
//Без параметра, даже пустого, список выдаст ошибку и будет прав
Список.Параметры.УстановитьЗначениеПараметра("ВыбраннаяНоменклатура", ВыбраннаяНоменклатура);
КонецПроцедуры
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
//Нас интересует только событие нажатия на чекбокс
Если Поле = Элементы.СписокПометка Тогда
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
Если ТекущиеДанные.Пометка Тогда
СнятьПометку(ТекущиеДанные.Ссылка);
Иначе
ПоставитьПометку(ТекущиеДанные.Ссылка);
КонецЕсли;
КонецЕсли;
КонецЕсли;
//Параметр в динамическом списке нужно обновить
Список.Параметры.УстановитьЗначениеПараметра("ВыбраннаяНоменклатура", ВыбраннаяНоменклатура);
Элементы.Список.Обновить();
КонецПроцедуры
&НаКлиенте
Процедура СнятьПометку(Номенклатура)
Индекс = ВыбраннаяНоменклатура.Найти(Номенклатура);
Если Индекс >= 0 Тогда
ВыбраннаяНоменклатура.Удалить(Индекс);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоставитьПометку(Номенклатура)
Индекс = ВыбраннаяНоменклатура.Найти(Номенклатура);
Если Индекс = Неопределено Тогда
ВыбраннаяНоменклатура.Добавить(Номенклатура);
КонецЕсли;
КонецПроцедуры
Поздравляю, теперь в вашем динамическом списке есть галочки!
А теперь как всё это работает.
Особенностью динамических списков является невозможность ввода данных непосредственно в список. Когда-то раньше такая возможность была, но нас ее лишили по техническим причинам. Поэтому вся информация, которая отображается в динамическом списке не может редактироваться и получается запросом.
Для динамических списков есть событие ПриПолученииДанныхНаСервере. Там тоже можно заполнить и переопределить некоторые поля. Но есть парочка больших НО, которые следует учитывать:
- Процедура выполняется без контекста. То есть реквизиты формы в ней недоступны. Есть, конечно, способ передать реквизиты через настройки компоновщика, но это не очень удобно.
- Отборы по таким полям не будут работать. А фишка динамических списков как раз в гибкости настроек. В итоге пользователь будет работать с ними как с обычными полями, а потом чесать репу и писать в саппорт что у него список не работает. Если вы пойдете этим путем - настоятельно рекомендую выделять такие колонки цветом.
- Это не имеет никакого отношения к интерактивному взаимодействию пользователя со списком.
А поскольку мы не можем менять данные в самом списке, значит они должны отображаться уже с учетом наших изменений. Остается передавать их в запрос через параметры. Делается это через переменную ВыбраннаяНоменклатура. Информацию к отображению можно передавать любым желаемым способом и в любой желаемой форме, главное чтобы запрос динамического списка его принял.
Еще один важный момент, без которого ничего не получится, это картинки флажков. Если вывести в списке обычное булево поле, то возникает ряд трудностей. Мало того, что галочки отрисовываются без чекбоксов, так еще и нажатие не срабатывает. Двойной клик по полю неудобен, а событие ПриАктивацииПоля не срабатывает если поле уже активировано. Для их решения, собственно, и сделаны манипуляции с полем картинки. На него навешивается гиперссылка и выбор будет срабатывать по однократному нажатию. Более того, у нас даже меняется курсор, показывая что чекбокс отзывается на нажатие.
Что имеем в сухом остатке:
- При нажатии на поле картинки срабатывает событие.
- В этом событии дополняется (или наоборот) массив ВыбраннаяНоменклатура.
- ВыбраннаяНоменклатура передается в динамический спискок
- Динамический список в зависимости от параметра отображает текущее состояние чекбоксов.
- Теперь снова можно нажимать на поле картинки, цикл замкнулся...
К слову, тот же прием вы можете использовать для ввода полей другого типа. Например прописать в событии "Выбор" для поля с датой процедуру ПоказатьВводДаты(), и вот уже пользователь может вводить дату в динамический список не меняя самих данных, по которым строится запрос. В некоторых случаях может быть удобно сделать реквизит с типом ТаблицаЗначений и хранить в нем сколько угодно временных данных, влияющих на динамический список.
Код разрабатывался для Управляемых форм на платформе 8.3, конфигурация значения не имеет.
Вступайте в нашу телеграмм-группу Инфостарт
Пример галочка флажок динамический список ввод пометка выбор данные запрос
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Механизмы платформы 1С Разработчик Бесплатно (free)
Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?
16.07.2025 45726 TitanLuchs 109
Работа с интерфейсом WEB-интеграция Механизмы платформы 1С Бесплатно (free)
Веб-интерфейсы повышают качество внешнего вида приложений 1С, предсказуемы с точки зрения верстки, позволяют организовать удобные и высокопроизводительные рабочие места для пользователей. Расскажем об особенностях разработки веб-интерфейсов на React внутри 1С, двустороннем взаимодействии 1С и JavaScript, а также сборке веб-приложения в одностраничный файл.
19.06.2025 18731 zeegin 15
Механизмы платформы 1С Работа с интерфейсом Разработчик Стажер 1С:Предприятие 8 Бесплатно (free)
Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).
03.02.2025 26067 bayselonarrend 127
Механизмы платформы 1С Разработчик 1С:Предприятие 8 Бесплатно (free)
В этой статье подробно рассматривается работа с JSON в XDTO в 1С:Предприятие. Вы узнаете, как сериализовать и десериализовать объекты XDTO в JSON, интегрировать 1С с веб-сервисами и API, а также корректно обрабатывать данные при обмене. Разбираются особенности работы с коллекциями, использование функций восстановления и частые ошибки при работе с JSON и XDTO.
30.01.2025 33359 user2122906 10
Механизмы платформы 1С Файловый обмен (TXT, XML, DBF), FTP Разработчик 1С:Предприятие 8 Бесплатно (free)
Этот материал познакомит вас с механизмом XDTO (XML Data Transfer Objects) в 1С и научит эффективно использовать его возможности. Мы разберёмся, как работать с XML-схемами, создавать модели данных, манипулировать объектами XDTO, а также сериализовать и десериализовать их в XML. Вы узнаете, как использовать XDTO для интеграции с внешними системами, избегать типичных ошибок и оптимизировать код. К концу вы будете уверенно применять XDTO для решения сложных задач обмена данными и автоматизации процессов.
17.01.2025 55926 user2122906 13
Механизмы платформы 1С WEB-интеграция Разработчик 1С:Предприятие 8 Бесплатно (free)
В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.
14.01.2025 46894 dsdred 110
Механизмы платформы 1С Разработчик 1С:Предприятие 8 Бесплатно (free)
Особенности "Знач" и разбор документации к нему.
10.01.2025 26499 VAAngelov 60
Механизмы платформы 1С Разработчик Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)
Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.
23.06.2024 40510 bayselonarrend 24
Реализовать установку/снятие пометок для нескольких строк сможет любой программист, а вот в статье подобные усложнения отвлекали бы от главного.
1. Пользователь отметил, скажем пять строк.
2. Пользователь установил отбор, скрывший две или три отмеченных строки.
3. Т.к. такой механизм делается ради какой-либо последующей обработки, то возникает вопрос: Сколько, с точки зрения пользователя, отмечено строк и сколько строк будет обработано?
Сразу скажу, что пару-тройку лет назад находил тут подобную статью и пыталься решить разнообразные вопросы, возникающие вследствии возможностей поведения динамического списка, но вопросов оказалось больше чем времени на их решение.
Механизм любопытный, но использовать стоит с оглядкой на возможные последствия.
Представим что пользователь работает с табличной частью в каком-нибудь заказе. Он отмечает нужные строки галочками, прокручивает список вниз, что должно происходить с пометками которые уползли вверх? Существует ли Луна, когда на нее никто не смотрит?)
То же самое с отборами. В обычной таблице значений, в которой флажки доступны по умолчанию и активно используются, можно выполнить поиск по колонке. В таблице останется одна строка, а остальные будут скрыты. Галочки при этом останутся. И если в таблице значений пользователь вынужден помнить или догадываться о том что он какой-то поиск использовал, то динамическому списку можно установить свойство "Группа пользовательских настроек", отобразить ее на форме, и пользователь всегда будет видеть что список не полный.
Но я при этом абсолютно согласен, что последствия стоит учитывать. Если последствия необратимы, то наверняка стоит предупреждать об этом, желательно со списком изменяемых объектов. А если что-то очень важное, то может стоит подумать над созданием мастера с несколькими шагами.
1.
Вы внимательно читали написанное?
Если пользователь в процессе установки отметок или после установки отметок изменит отборы списка, то "картинка" изменится, соответственно, нужно при реализации механизма это учитывать. Наиболее простые варинты: при изменении отборов сбрасывать список отмеченных элементов или запрещать отборы.
Большое спасибо за идею.
Большое спасибо за идею.
1) Различные АРМ закупок, продаж, складские и т.д. Отмечаем галочками заказы, нажимаем кнопку "Можно отгружать", заказы пошли другому отделу
2) Форма выбора из справочника. Можно будет выбирать несколько элементов. Может заменить типовую обработку подбора в документ во всяких УТ, КА, ЕРП.
3) Любая внешняя обработка объектов, в которой перед обработкой может потребоваться их анализ. В динамическом списке, в отличии от обычной таблицы, пользователь может выводить новые колонки, отбирать по ним, сортировать и т.д. В общем, если у вас таблица больше, скажем, 100 элементов в ней уже можно запутаться, особенно если разработчик догадался вывести только наименование.
Замечания по поводу неопределенности при использовании отборов, по-моему, не обоснованы - поведение точно такое же как с отборами в таблице формы.
Я делал на условном оформлении. Добавил 2 колонки. В одной колонке (СписокПоле1, СписокПоле2) картинка флаг, в другой без флага. Данные флага - истина, просто поле в тексте запроса.
Так же как у автора есть список выбранных. Поход к работе с выбранными, как у автора, разница только в установке правого значения оформления. Прошу простить за идентификаторы, пример на коленке воспроизводил.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлементУО = УсловноеОформление.Элементы.Добавить();
ЭлементУО.Представление = "Выделение подобранных";
КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокПоле1");
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор,
"Список.Ссылка", ВидСравненияКомпоновкиДанных.ВСписке, "");
ЭлементУО.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ЭлементУО = УсловноеОформление.Элементы.Добавить();
ЭлементУО.Представление = "Выделение подобранных1";
КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокПоле2");
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор,
"Список.Ссылка", ВидСравненияКомпоновкиДанных.НеВСписке, "");
ЭлементУО.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
УстановитьСписокВыбранныхДокументов();
КонецПроцедуры
&НаСервере
Процедура УстановитьСписокВыбранныхДокументов()
ЭлементУсловногоОформления = Неопределено;
Для каждого ЭлементОформления Из УсловноеОформление.Элементы Цикл
Если ЭлементОформления.Представление = "Выделение подобранных" Тогда
ЭлементОформления.Отбор.Элементы[0].ПравоеЗначение = Карзина;
КонецЕсли;
Если ЭлементОформления.Представление = "Выделение подобранных1" Тогда
ЭлементОформления.Отбор.Элементы[0].ПравоеЗначение = Карзина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле = Элементы.СписокПоле1 ИЛИ Поле = Элементы.СписокПоле2 Тогда
Ссылка = Элементы.Список.ТекущаяСтрока;
СтандартнаяОбработка = Ложь;
Запись = Карзина.НайтиПоЗначению(Ссылка);
Если Запись = Неопределено Тогда
Карзина.Добавить(Ссылка);
Иначе
Карзина.Удалить(Карзина.Индекс(Запись));
КонецЕсли;
УстановитьСписокВыбранныхДокументов();
КонецЕсли;
КонецПроцедуры
ПоказатьГалка устанавливается только при двойном щелчке.
Не совсем понятно, как меняется картинка с пустой на галку (это же обычная системная картинка 32х16). Она просто сдвигается? Или это какая-то уникальная картинка, которая реагирует на выбор?
Ну и в принципе механизм не работает - когда установил галки и нажал на кнопку выбрать, в параметрах передаётся только выделенный объект, а не те, на которых я установил галки.
Для иерархических справочников пометка/снятие переделывается за 20 минут
ВЫБРАТЬ
ДокументРеализацияТоваровУслуг.Ссылка КАК Ссылка,
ДокументРеализацияТоваровУслуг.ПометкаУдаления КАК ПометкаУдаления,
ДокументРеализацияТоваровУслуг.Номер КАК Номер,
ДокументРеализацияТоваровУслуг.Дата КАК Дата,
ВЫБОР
КОГДА ДокументРеализацияТоваровУслуг.Ссылка В (&НеОтмеченныеФлажкамиДокументы)
ТОГДА истина
ИНАЧЕ ложь
КОНЕЦ КАК Флажок
ИЗ
Документ.РеализацияТоваровУслуг КАК ДокументРеализацияТоваровУслуг
ГДЕ
ДокументРеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
И ВЫБОР
КОГДА &КоличествоСтрокСЗКонтрагентов = 0
ТОГДА ИСТИНА
ИНАЧЕ ДокументРеализацияТоваровУслуг.Контрагент В (&КонтрагентРеализации)
КОНЕЦ
И ВЫБОР
КОГДА &КоличествоВыбранныеДокументыРеализацииСЗ = 0
ТОГДА ИСТИНА
ИНАЧЕ ДокументРеализацияТоваровУслуг.Ссылка В (&ВыбранныеДокументыРеализацииСЗ)
КОНЕЦ
Для указанных в запросе параметров указываем значения в как, например, в следующей процедуре:
&НаСервере
Процедура ПерезаполнитьВыбранныеДокументыРеализацииСЗ()
ВыбранныеДокументыРеализации_Основная_ТЗ = ПолучитьВыборкуДокументовРеализацииДляЗаполненияЖурналаДокум ентовРеализации();
ВыбранныеДокументыРеализацииСЗ.Очистить();
Для каждого Стр Из ВыбранныеДокументыРеализации_Основная_ТЗ Цикл
Если не Стр.Ссылка.ДоговорКонтрагента.Комментарий = "" Тогда
ВыбранныеДокументыРеализацииСЗ.Добавить(Стр.Ссылка);
КонецЕсли;
КонецЦикла;
//Далее, в списке значений ВыбранныеДокументыРеализацииСЗ храняться все документы за выбранный период и другими установленными параметрами,
// а в списке значений НеОтмеченныеФлажкамиДокументы хранится список документов реализации, не помеченный флажками, для дальнейшей
// выборки данных документов в последующих алгоритмах обработки
НеОтмеченныеФлажкамиДокументы = ВыбранныеДокументыРеализацииСЗ;
ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("НеОтмеченныеФлажкамиДокументы",НеОтмеченныеФлажкамиДокументы);
ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("НачалоПериода",НачалоПериода);
ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КонецПериода",КонецПериода);
КоличествоСтрокСЗКонтрагентов = КонтрагентРеализации.Количество();
ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КоличествоСтрокСЗКонтрагентов",КоличествоСтрокСЗКонтрагентов);
ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КонтрагентРеализации",КонтрагентРеализации);
КоличествоВыбранныеДокументыРеализацииСЗ = ВыбранныеДокументыРеализацииСЗ.Количество();
ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КоличествоВыбранныеДокументыРеализацииСЗ",КоличествоВыбранныеДокументыРеализацииСЗ);
ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументыРеализацииСЗ",ВыбранныеДокументыРеализацииСЗ);
Элементы.ЖурналДокументовРеализации.Обновить();
КонецПроцедуры // ПерезаполнитьВыбранныеДокументыРеализацииСЗ()
Данный метод, в моем случае, вызывается из события "Создание на сервере", а тажке в событиях при изменении для реквизитов формы "НачалоПериода", "КонецПериода" и "КонтрагентРеализации". Посредством данного метода обновляется ДС в соответствии с измененными реквизитами, а также в актуальном состоянии поддерживается список значений "НеОтмеченныеФлажкамиДокументы" (аналог массива в примере, данном первым автором данной заметки).
Следующий метод отрабатывает кликанье мышкой по полю флажка ДС:
&НаКлиенте
Процедура ЖурналДокументовРеализацииВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле = Элементы.ЖурналДокументовРеализацииФлажок Тогда
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элемент.ТекущиеДанные;
Для каждого Стр Из НеОтмеченныеФлажкамиДокументы Цикл
Если Стр.Значение = ТекущиеДанные.Ссылка Тогда
Индекс = НеОтмеченныеФлажкамиДокументы.Индекс(Стр);
Прервать;
КонецЕсли;
КонецЦикла;
Если ТекущиеДанные <> Неопределено Тогда
Если ТекущиеДанные.Флажок Тогда
Если Индекс >= 0 Тогда
НеОтмеченныеФлажкамиДокументы.Удалить(Индекс);
КонецЕсли;
Иначе
Если Индекс = Неопределено Тогда
НеОтмеченныеФлажкамиДокументы.Добавить(ТекущиеДанные.Ссылка);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("НеОтмеченныеФлажкамиДокументы",НеОтмеченныеФлажкамиДокументы);
КоличествоСтрокСЗКонтрагентов = КонтрагентРеализации.Количество();
ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КоличествоСтрокСЗКонтрагентов",КоличествоСтрокСЗКонтрагентов);
ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КонтрагентРеализации",КонтрагентРеализации);
КоличествоВыбранныеДокументыРеализацииСЗ = ВыбранныеДокументыРеализацииСЗ.Количество();
ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КоличествоВыбранныеДокументыРеализацииСЗ",КоличествоВыбранныеДокументыРеализацииСЗ);
ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументыРеализацииСЗ",ВыбранныеДокументыРеализацииСЗ);
Элементы.ЖурналДокументовРеализации.Обновить();
КонецПроцедуры ПоказатьЧасть кода последнего метода практически идентичен коду первого автора заметки, за исключением использования списка значений вместо массива, а также использовано больше параметров (что полезно будет для наглядности).
Код может немного некорректно отработать с флажками, приведенных автором первой заметки, так как мной были использованы пиктограммы с крестиками. Но достаточно будет просто заменить Ложь на истину в соответствующем месте запроса, чтобы все отработала нормально.
К данному комментарию также прикрепляю пиктограмму флажка, который приведен первым автором заметки.
В комментариях есть вопросы, что отрабатывает только первое нажатие на поле флажка, а на последующие программа не реагирует. Это, в первую очередь, может быть связано с тем, что используется одинарный значок, а не двойной, который прикреплен к моему комментарию.
&НаКлиенте
Процедура ДокументыПриАктивизацииЯчейки(Элемент)
Если Элемент.ТекущийЭлемент = Элементы.ДокументыПометка Тогда
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
Если ТекущиеДанные.Пометка Тогда
СнятьПометку(ТекущиеДанные.Ссылка);
Иначе
ПоставитьПометку(ТекущиеДанные.Ссылка);
КонецЕсли;
КонецЕсли;
//Параметр в динамическом списке нужно обновить
Документы.Параметры.УстановитьЗначениеПараметра("ВыбранныеРеализации", ВыбранныеРеализации);
Элементы.Документы.Обновить();
Элемент.ТекущаяСтрока = Неопределено;
КонецЕсли;
КонецПроцедуры
ПоказатьВы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 1273816
Создание 04.08.20 07:56
Обновление 18.08.20 09:25
Просмотры 61416
Загрузки 0
Рейтинг
175
Комментарии 45
Код открыт Да
Рубрики Механизмы платформы 1С
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация Универсальные
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)