arefaste/1C_Forums huggingface dataset:
Добрый день, уважаемые форумчане.

Встал вопрос автоматической подкачки файла по жизненно необходимым препаратам с сайта минздрава
http://grls.rosminzdrav.ru/pricelims.aspx?s=&m=mnn

справа вверху есть файлик.

Может кто то подскажет пож, как можно из 1С программно его себе на компьютер закачать
Заранее огромное спасибо за помощь!
---
Возможно, что он не меняется, это надо понаблюдать.Ваш файл - это госреестр препаратов, а Вам, как я понял, нужен реестр предельных цен - это другой файл. ГУИД тут - это некий хеш от даты, так что качается файл на захешированную дату. Проще всего просто получить файл страницы, найти в нем див с типом зипфайл - там есть что-то в этом духе, потом найти там "a href=", оттуда вырезать имя файла. ИД юзера там после & - необязательный аргумент.

А по поводу получения файла, то есть объект HTTPСоединение, есть объект HTTPЗапрос, у него есть метод "Получить", в котором локальный урл передается. Все. На выходе ответ, если в ответе 200, то в теле файл. Дальше получить двоичные данные из тела, записать в ZIP, открыть зипом, записать Экскель, открыть табличным документом, пройтись по колонке ШК и цена и запилить документ установки цен с типом "Предельно допустимая" или как там у вас это все устроено. 2 часа работы, 4к.
---
http://yaforyou.ru/?q=%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C%20%D1%84%D0%B0%­D0%B9%D0%BB%20%D0%B2%201%D1%81
---
даже бы подошел просто примерчик выкачки любого файлика с сайта, как это делается на языке программирования 1С
заранее спасибо за помощь и идею
---
В "выкачке" (что за новый термин?) как раз проблем нет:

```1c
    КопироватьФайл("http://grls.rosminzdrav.ru/GetGRLS.ashx?FileGUID=3d3e73c0-f882-4bf3-a06a-01e4752f1a84&UserReq=7852122", "C:\")
```

Вопрос в получении вот этого самого набора символов для первого параметра функции КопироватьФайл().
---
ну да, вот это вопрос, как распарсить и получить этот ID
---
Возможно, что он не меняется, это надо понаблюдать.
---
Возможно, что он не меняется, это надо понаблюдать.Ваш файл - это госреестр препаратов, а Вам, как я понял, нужен реестр предельных цен - это другой файл. ГУИД тут - это некий хеш от даты, так что качается файл на захешированную дату. Проще всего просто получить файл страницы, найти в нем див с типом зипфайл - там есть что-то в этом духе, потом найти там "a href=", оттуда вырезать имя файла. ИД юзера там после & - необязательный аргумент.

А по поводу получения файла, то есть объект HTTPСоединение, есть объект HTTPЗапрос, у него есть метод "Получить", в котором локальный урл передается. Все. На выходе ответ, если в ответе 200, то в теле файл. Дальше получить двоичные данные из тела, записать в ZIP, открыть зипом, записать Экскель, открыть табличным документом, пройтись по колонке ШК и цена и запилить документ установки цен с типом "Предельно допустимая" или как там у вас это все устроено. 2 часа работы, 4к.
---
спасибо вам большое, иногда вот таких простых обьяснений не хватает. все получилось, вопрос закрываю.
Есть внешняя обработка на обычных формах. Включено сохранение значений формы, и она не подключена в качестве внешней обработки (открываю через Файл-Открыть). Сохраняю значения (см. рис. 1).

Вопрос: где хранятся эти сохраненные значения и как их достать программно?

ХранилищеОбщихНастроек, ХранилищеПользовательскихНастроекОтчетов, ХранилищеВариантовОтчетов, ХранилищеНастроекДанныхФорм, ХранилищеСистемныхНастроек - проверил путем метода Выбрать(), получив вообще все, что там хранится, сохраненных значений в них нет.
В конфигурации эти хранилища не переопределены, все стандартное (см. рис. 2).

Также менял расположение файла, имя файла, имя обработки, менял компьютер, чистил кэш - сохраненные значения не исчезают, т.е. они хранятся на сервере где-то.
---
Всем спасибо, нагуглил ответ на вопрос. Кому интересно - он тут https://forum.infostart.ru/forum9/topic72196/
---
Как я понял, они хранятся в самой форме (кэше). Для их очистки я обычно копирую основную форму отчета (обработки), назначаю скопированную основной, а основную (бывшую) удаляю
---
Или нужно именно получить эти значения?
---
Еще посмотрите РС СохраненныеНастройки
---
Смотрел, там этого нет. Я ведь использую механизм платформы для сохранения, а не конфигурации. В том регистре ничего не появится, если вручную сохранение не прописывать. Мне нужно скопировать их другому пользователю, а не очистить, поэтому способ (3) не пройдет.
---
Средствами платформы вряд ли получится, поэтому только вручную
---
Вряд ли это документировано.
---
Всем спасибо, нагуглил ответ на вопрос. Кому интересно - он тут https://forum.infostart.ru/forum9/topic72196/
---
Спасибо!
Уважаемые форумчане
пытаюсь удалить ненужные столбцы в ексель в цикле 1с, но при удалении столбца видимо номер столбца меняется и он удаляет не все колонки, видимо надо как то надо отлавливать номер колонки, может есть другой вариант?

```1c
    Excel = Новый COMОбъект("Excel.Application");
    Workbook = Excel.Workbooks.Open(ПолноеИмяФайла);
    Лист = Workbook.Sheets(1);
    ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
    ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;

    Список = Новый СписокЗначений;
    Список.Добавить("Наименование товаров");
    Список.Добавить("Количество");
    Список.Добавить("Единица измерения");
    Список.Добавить("Цена");
    Список.Добавить("НДС");
    Список.Добавить("Стоимость поставки с учётом НДС");
    Список.Добавить("Стоимость поставки");
    Список.Добавить("Сумма НДС");

    Для Строка = 1 по ВсегоКолонок цикл
    СтрокаПоиска = Список.НайтиПоЗначению(СокрЛП(Лист.Cells(1,Строка).Value));
    Если СтрокаПоиска = Неопределено Тогда
    Лист.Columns(Строка).Delete();
    КонецЕсли;
    КонецЦикла;
```
---
может есть другой вариант? Попробуйте цикл не от начала а от конца...
ЗЫ для таблицы значений обычно добавляется колонка пометки удаления, затем проставляются пометки и уж потом удаляются ненужные колонки. Может это натолкнет Вас на нужные действия.
---
может есть другой вариант? Попробуйте цикл не от начала а от конца...
ЗЫ для таблицы значений обычно добавляется колонка пометки удаления, затем проставляются пометки и уж потом удаляются ненужные колонки. Может это натолкнет Вас на нужные действия.
---
Спасибо обратным циклом сработало как надо
Добрый день! На форме есть реквизит "Банк" тип "СправочникСсылка.БанковскиеСчета" на форме он выводит список всех банковский счетов а как сделать так, чтоб выводил Банковские счета которые относиться тока к определенной организации?
---
На форму добавить организацию и у реквизита Банк установить связь по владельцу
---
На форму добавить организацию и у реквизита Банк установить связь по владельцу
---
А в коде как?
---
При начале выбора получить форму, установить отборы, открыть форму, поймать событие выбора...

А проще таки организацию на форму добавить. Можно невидимую...
---
Процедура БанкНачалоВыбора(Элемент, СтандартнаяОбработка)
    Элемент.ВыборПоВладельцу = Организация;
КонецПроцедуры
---
У меня в реквизите "Банк" установил Связи параметров выбора Отбор.Владелец(ОтборОрганизации) и все заработало. Тема закрыта.
---
Дополню, для объектов размещенных в расширении необходимо доустановить свойство "Владельцы"
Добрый день, не могу сообразить обращаюсь к сайту получаю от него данные в формате json

```1c
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
    ЧтениеJSON.Закрыть();

    Объект.Ответ = Ответ.ПолучитьТелоКакСтроку();
```

```1c
    "valuedItem": [
    {
    "entity": {
    "text": "Ручка шариковая"
    },
    "ident": {
    "system": "https://",
    "value": "01-01"
    },
    "price": {
    "value": 10.00,
    "currency": "RUB"
    }
    },
```

Как теперь из него достать данные и поместить их в таблицу ?
---
Значение - это строка json

```1c
    Функция СтрокуJSONВСтруктуру(Значение)

    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Значение);

    Результат = ПрочитатьJSON(ЧтениеJSON);

    ЧтениеJSON.Закрыть();

    Возврат Результат;

    КонецФункции
```
---
```1c
    чтение = Новый ЧтениеJSON;
    чтение.УстановитьСтроку(Обекът.Ответ);
    стОтвет = ПрочитатьJSON (Чтение, Ложь)
```
---
Результат будет структура.
---
Значение - это строка json

```1c
    Функция СтрокуJSONВСтруктуру(Значение)

    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Значение);

    Результат = ПрочитатьJSON(ЧтениеJSON);

    ЧтениеJSON.Закрыть();

    Возврат Результат;

    КонецФункции
```
---
Я так понимаю в цикле надо будет выводить ?
---
Результат будет структура.
---
Что с ней сделать ? Её перебрать в цикле надо вывести всё содержимое в таблицу ?
---
Смотря для чего оно тебе нужно.
если в таблицу - то да, цикл.

Хотя... Если в БД, то тоже цикл...
Даже если захочешь просто распечатать - и тут без цикла никуда....

Кругом засады...
---
(7) У меня ошибку выдаёт

```1c
    Ошибка отображения типов:
    Отсутствует отображение для типа 'HTTPОтвет'
    {Документ.Документ.Форма.ФормаДокумента.Форма(22)}: Для Каждого Строка Из СтрокуJSONВСтруктуру(Ответ) Цикл

    по причине:
    Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
    по причине:
    Ошибка преобразования данных XDTO:
    Запись значения свойства 'param':
    форма: Элемент
```

Что не так то ?
---
Ответ нельзя передавать между клиентом и сервером.
---
У меня всё &НаКлиенте.
---
Обманывать не хорошо.
Ошибка передачи данных между клиентом и сервером.
---
```1c
    чтение = Новый ЧтениеJSON;
    чтение.УстановитьСтроку(Обекът.Ответ);
    стОтвет = ПрочитатьJSON (Чтение, Ложь)
```
---
Есть такая сущность как НовыйЧтениеJSON в него передаешь текст JSON с помощью метода
УстановитьСтроку()
И далее ПрочитатьJSON

подробнее
https://wonderland.v8.1c.ru/blog/sredstva-raboty-s-json/
---
ПрочитатьJSON() - парсить более или менее начал с платформы 8.3.12
У Вас приходит массив с вложенными map. Ключ строка, 1С (в теории) преобразует с структуру если ПрочитатьJSON(<ЧтениеJSON> , Ложь) (при втором параметре ИСТИНА, читает в соответствие(map)) - но к сожалению не всегда это делает!
Всегда есть вариант парсить вручную через потоковое чтение) - так надежнее)
Добрый вечер!
Столкнулся с проблемой взятия данных. В форме отчета № 1-Т Квартальный 2018 - 2021 год на четвертой странице четвертого раздела (Приложение 1) есть строки в которых должна заполняться численность работников принятых на работу по совместительству и численность лиц выполняющих работы по договорам ГПХ (Приложение 2). Мне нужно посмотреть как заполняются данные в этих строках, и заполнение первой строки я в коде вижу, а второй просто нет (Приложение 3). Помогите разобраться, какие данные все же должны быть во второй строке, где их можно взять?
В этом модуле при поиске по имени ячейки второй строки (ГПХ) результатов нет (Приложение 4 - 5).

Платформа - 1С:Предприятие 8.3, учебная версия (8.3.18.1128).
Конфигурация - Бухгалтерия для Казахстана, редакция 3.0, разработка для Казахстана: «1С-Рейтинг» (3.0.39.4).
---
К сожалению пусто
---
Поищи попробуй просто по Стр402. Может там имя строки динамический формируется.
---
К сожалению пусто
В момент удаления элемента в МассивВСД2 элемент также удаляется из МассивВСД

```1c
    сч = 0;
    МассивВСД2 = МассивВСД;
    Для каждого ВСД Из МассивВСД Цикл

    Для каждого ВТО Из МассивВТО Цикл

    Если ВСД = ВТО Тогда

    МассивВСД2.Удалить(сч);

    КонецЕсли;

    КонецЦикла;

    сч = сч + 1;

    КонецЦикла;
```
---
Потому что обе переменные ссылаются на один массив
---
Что бы один массив перекачать в другой, то через цикл.
---
Потому что обе переменные ссылаются на один массив
---
Что бы один массив перекачать в другой, то через цикл.
Добрый день. Платформа 8.3.

Подскажите, есть ли какая-либо возможность устанавливать параметры запуска для пользователя в программе?
Например, пользователь хочет запустить 1с на английском языке, для этого ему приходится в настройках запуска прописывать параметр запуска. Поступают жалобы, что гораздо удобнее было бы "поставить галочку" и перезапустить программу, чем прописывать вот это вот все.

Спасибо
---
При запуске читать сохранённый параметр настройки (где - сам придумаешь).
Если текущий язык не совпадает - сделать ЗавершитьРаботуСистемы(Ложь, Истина, СтрокаСПараметромНужногоЯзыкаКакОписаноВСправке)
---
Вы в окне запуска 1С заведите несколько записей для одной и той же базы, но с разными параметрами. Пользователь будет выбирать из списка что ему нужно.
---
Да, спасибо, тоже о таком варианте думал. Если решение не найдется, то так и сделаю.
---
Кто ищет, тот обрящет.
/L [код языка] указывается код языка интерфейса платформы. Поддерживаемые языки интерфейса: Английский – en, Русский – ru, Украинский – uk.

https://its.1c.ru/db/v838doc#bookmark:adm:TI000000495

https://infostart.ru/public/104654/
---
Вопрос собственно не в этом. Пользователи и жалуются, что постоянно в параметрах запуска прописывать код языка, а потом удалять его не хотят, да и не все умеют.

Вопрос - можно ли каким-то образом программно формировать параметр запуска. Например, в неком РС сохраним настройку запуска. Далее проверяем - есть ли настройка, если есть, тогда запускаем всегда 1с с параметром языка, указанном в РС. Если нет, то запускаем по умолчанию.
---
Либо про переустановке платформы он тоже слетает.
---
Нужно закрепить за пользователем язык или нужно, чтобы один и тот же пользователь мог выбирать язык при запуске?
---
Ярлык не подойдет. Они в 2х ярлыках запутаются.

Пока что рабочий вариант такой - добавили 2 базы с разными параметрами запуска в плате языка.

В идеале хотелось бы так:
1) Пользователь заходит в свои персональные настройки (некая форма).
2) В форме видит переключатель: Англ\Рус
3) Клацает на нужный язык, система фиксирует это каким-то образом.
4) Затем либо при запуске программы, либо в момент сохранения настроек система добавляет настройку в параметр запуска.
5) Ну а запуск уже происходит с нужной настройкой на нужном языке.

Проблема с п.4. Вообще можно ли это реализовать?
---
При запуске читать сохранённый параметр настройки (где - сам придумаешь).
Если текущий язык не совпадает - сделать ЗавершитьРаботуСистемы(Ложь, Истина, СтрокаСПараметромНужногоЯзыкаКакОписаноВСправке)
Вдруг появилась ошибка при подключении к хранилищу.
В проводнике каталог хранилища открывается нормально.
---
Похоже причина найдена - закончилось место на диске файлового хранилища.
---
Значит кто то заблокировал файл. По сети не рекомендую работать.
---
а как работать нескольким разработчикам не по сети?
---
а сервер разработки нельзя сделать?
Ну раз место кончилось добавляйте.
---
Похоже причина найдена - закончилось место на диске файлового хранилища.
Подскажите есть ли возможность вывода логотипа в принтер чеков.

Требуется логотип при пробитии в пко конфигурации ут 11

Сам текст формируется в коде в виде текста.
Возможно ли передать туда фото логотипа?

***
---
спасибо за ответы. создал свой макет, заполнил как надо и вывел его на печать через нужный принтер
---
```1c
    Объект.Организация.ФайлЛоготип.ПутьКФайлу
```

Вот эту как то попробуйте присвоить к
```1c
    Функция ПараметрыЧека()
```
 на ЧекККМ ФормаДокументаРМК
---
ФайлЛоготип

Чтот не совсем понимаю как это сделать..

Вообще возможно ли лого в текст закинуть или лучше пилить макет , закинуть в него лог и остальную часть заполнять уже по подобию существующего.
---
ап. Суть задачи если по простому то просто каким либо образов добавить логотип в шапку чека

Пример того что есть и как надо
---
Тут надо понимать следующее:
1. У чека есть Шапка, Тело чека и Подвал, после чего идет зона отреза.
2. Отрезчик стоит не сразу, после термоголовки, а чуть дальше.
Исходя из этого, получаем следующее:
3. На принтере печатается сначала Чек, потом Подвал, потом начинается печать Шапки следующего чека и тут где-то срабатывает отрезчик, который отделяет этот Чек.
4. Потом Шапка следующего чека допечатывается (хотя чаще всего она короткая и сначала печатается, а только потом Чек отрезается)

Собственно к чему это все - на вашей фотке чек их Перекрестка - там явно видно, что это Шапка чека. А значит она печаталась только при помощи самого принтера чеков.
Еще раз подчеркну - это не программная печать, а настройка самого шаблона чека в принтере.
Вот, например, как печатать такой Логотип на Штрихах: https://shtrih-v.ru/about/stati/chastye-voprosy-po-kassam-proizvodstva/shtrih-m-kak-pechatat-svoj
---
спасибо за ответы. создал свой макет, заполнил как надо и вывел его на печать через нужный принтер
В обработке заполнения есть такие строки:

```1c
    Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

    Перем ИмяПоля;
    Перем ДокументОснование;
    Перем ДатаПоступления;
    ТекстСообщенияОНекорректномСоздании = НСтр("ru = 'Приходный ордер на товары нужно вводить из формы "Приемка".'");

    Если ДанныеЗаполнения = "АвтоТест" Тогда
    Возврат;
    КонецЕсли;

    Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда ...
```

Хотелось бы узнать, где найти модуль, где формируется структура из реквизитов документов основания. Стек вызовов не помог, не показывает ссылку.
---
Нигде... Можете сюда прислать ссылку документа основания и написать свой кусок кода заполнения на основании.
```1c
    Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.МойДокументОснование") Тогда
```

А можете просто структуру с ключевыми значениями прислать (как в данном примере)...
---
Код из типовой УТ 11.4
---
Нигде... Можете сюда прислать ссылку документа основания и написать свой кусок кода заполнения на основании.
```1c
    Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.МойДокументОснование") Тогда
```

А можете просто структуру с ключевыми значениями прислать (как в данном примере)...
---
Спасибо, попробовал первый вариант и сразу получилось. А я пол дня убил на то, чтобы найти структуру!
Всем ДВС!
Имеется бухгалтерия 3.0.91.36, платформа 8.3.17.1851.

Создал расширение, добавляю в него: общую команду "ПоказатьДвиженияДокумента" (вместе с модулем), План счетов, ПВХ, Регистр бухгалтерии.
Создаю свой документ, на командную панель формы надо вывести кнопку "Движение документа".
В модуле формы все нужные процедуры и функции созданы.
В итоге кнопка никак не отображается.
В чем может быть проблема?
---
этот вариант мне не подходит...

сделал так: создал команду формы, кинул кнопку на форму, прописал процедуру:

&НаКлиенте
Процедура ПоказатьДвижения(Команда)

 ПараметрыФормы = Новый Структура("ДокументДвижений", Объект.Ссылка);
 ОткрытьФорму("Обработка.КорректировкаДвижений.Форма", ПараметрыФормы, Команда, Команда);

КонецПроцедуры

и вуаля, все работает...
---
В свойстве команды "Тип параметра команды" добавили свой новый документ в состав?
---
Добавил, начинает ругаться на несоответствие с значением команды в расширяемой конфигурации...
---
по поводу ошибки: https://forum.infostart.ru/forum29/topic216924/ - это ваша же тема была ранее на форуме)
---
Забыл, что создавал тему...
---
может лучше посмотреть как добавляется команда отчета в типовые документы? Там добавить две строчки нужно в два модуля...
---
Процедуры в модуле формы скопированы типовые...
И сам документ скопирован из ERP со всеми потрохами
---
https://its.1c.ru/db/bsp313doc#content:51:hdoc
---
этот вариант мне не подходит...

сделал так: создал команду формы, кинул кнопку на форму, прописал процедуру:

&НаКлиенте
Процедура ПоказатьДвижения(Команда)

 ПараметрыФормы = Новый Структура("ДокументДвижений", Объект.Ссылка);
 ОткрытьФорму("Обработка.КорректировкаДвижений.Форма", ПараметрыФормы, Команда, Команда);

КонецПроцедуры

и вуаля, все работает...
---
а мог бы не изобретать велосипед и сделать по стандарту ;)
---
это бухгалтерия, там стандартно кнопка Дт/Кт, а по твоей ссылке меню...
---
В БП3 нет подменю отчетов? Интересно
---
на вкус и цвет все фломастеры разные...
зачем лазить по подменю, если можно просто ткнуть в кнопку?
---
чтобы не изобретать велосипед...
Добрый день!
Есть форма, на ней есть панель со страницами, и существует привязка (При растяжении формы - панель растягивается, при сжатии - панель сжимается)
Нужно задать минимальный размер панели, чтоб когда панель при сжатии достигла минимума, дальше уже не сжималась, а включалась вертикальная полоса прокрутки для всей формы.
Помогите пожалуйста новичку
---
На ум приходит такая конструкция

```1c
    Процедура ПриОткрытии()
    ПодключитьОбработчикОжидания("Размер",1);
    КонецПроцедуры

    Процедура Размер()
    Если ЭлементыФормы.ТабличноеПоле1.Ширина<300 тогда
    ЭлементыФормы.ТабличноеПоле1.Ширина=300;
    КонецЕсли;
    Если ЭлементыФормы.ТабличноеПоле1.Высота<190 тогда
    ЭлементыФормы.ТабличноеПоле1.Высота=190;
    КонецЕсли;
    КонецПроцедуры
```

Но работает это коряво на вид.
Либо привязки установить не жестко а Сохранять пропорции до - но тоже не решает всех проблем
---
Какие формы?
---
Обычная
---
Смотри у меня такая фигня есть.

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

    Этаформа.Высота=600;
    Этаформа.Ширина=800;

КонецПроцедуры

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

```1c
    Процедура ПриОткрытии()
    ПодключитьОбработчикОжидания("Размер",1);
    КонецПроцедуры

    Процедура Размер()
    Если ЭлементыФормы.ТабличноеПоле1.Ширина<300 тогда
    ЭлементыФормы.ТабличноеПоле1.Ширина=300;
    КонецЕсли;
    Если ЭлементыФормы.ТабличноеПоле1.Высота<190 тогда
    ЭлементыФормы.ТабличноеПоле1.Высота=190;
    КонецЕсли;
    КонецПроцедуры
```

Но работает это коряво на вид.
Либо привязки установить не жестко а Сохранять пропорции до - но тоже не решает всех проблем
---
Спасибо большое!