arefaste/1C_Forums huggingface dataset:
Вопрос вроде легкий но не могу разобраться

В запросе динамического списка в расширении прописываю

```1c
    КонтактныеЛицаПартнеровКонтактнаяИнформация.Вид = Значение(Справочник.ВидыКонтактнойИнформации.ТелефонПартнера)
```

Если я это делаю в расширении то пишет ошибку. В основной конфигурации проходит. Добавил предопределенное значение ТелефонПартнера в расширение в справочнике Контактная информация. Он в модуле после точки стал выдавать ТелефонПартнера, однако в запросе динамического списка не проходит

Почему расширение не видит предопределенные значения основной конфигурации
---
Все нашел ошибку, Я заимствововал предопределенное значение ТелефонКонтактногоЛица а прописывал ТелефонПартнера. В справочнике Виды КИ очень много похожих видов и я запутался
---
Ошибка-то в чём? Что значит "не видит"? Выдаёт ошибку при выполнении запроса?
---
Да, запрос не хавает

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

Посмотрел. В ДоговорПриИзмененииСервер() происходит целая куча необходимых действий.
---
Сделай ДокОбъект.Договор = Объект.НовыйДоговор;
---
Что-то происходит в событии ДоговорПриИзменении. Либо подключай выполнение этого события, либо перенеси его действия в свою обработку

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

```1c
    Картинка = Строка.Номенклатура.Картинка.Получить();
    Если Картинка <> Неопределено Тогда
    Строка.КартинкаСсылка = ПоместитьВоВременноеХранилище(Картинка, УникальныйИдентификатор);
    КонецЕсли;

    ПолеТовар = Элементы.Добавить("Товар__" + ИдентификаторСтроки, Тип("ПолеФормы"), ГруппаКарточкаТовара);
    Если Картинка <> Неопределено Тогда
    ПолеТовар.Вид = ВидПоляФормы.ПолеКартинки;
    Иначе
    ПолеТовар.Вид = ВидПоляФормы.ПолеНадписи;
    ПолеТовар.Заголовок = СокрЛП(Строка.Номенклатура);
    КонецЕсли;
    ПолеТовар.ПутьКДанным = "ТаблицаПодбора[" + ИдентификаторСтроки + "].КартинкаСсылка";
    ПолеТовар.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
    ПолеТовар.РазмерКартинки = РазмерКартинки.Пропорционально;
    ПолеТовар.Гиперссылка = Истина;
    ПолеТовар.РастягиватьПоГоризонтали = Ложь;
    ПолеТовар.РастягиватьПоВертикали = Ложь;
    ПолеТовар.Рамка = Новый Рамка(ТипРамкиЭлементаУправления.Выпуклая, 3);
    ПолеТовар.Ширина = 20;
    ПолеТовар.Высота = 10;
    ПолеТовар.УстановитьДействие("Нажатие", "КартинкаСсылкаНажатие");
```
---
ПолеТовар.ПутьКДанным = "ТаблицаПодбора[" + ИдентификаторСтроки + "].КартинкаСсылка";ИдентификаторСтроки это что такое?
---
При перезаполнении таблицы идентификатор строки всегда увеличивается.
Пример - добавить строку в таблицу, удалить и снова добавить - идентификатор у новой строки будет уже другой.
В строке ТаблицаПодбора[" + ИдентификаторСтроки + "].КартинкаСсылка про которую пишет коллега, вы идентификатор используете как индекс. Это так не работает.
Точнее работает, но только один раз.
Награду передайте коллеге из (2).
---
ПолеТовар.ПутьКДанным = "ТаблицаПодбора[" + ИдентификаторСтроки + "].КартинкаСсылка";ИдентификаторСтроки это что такое?
---
ИдентификаторСтроки = Формат(Строка.ПолучитьИдентификатор(), "ЧН=0; ЧГ=");

идентификатор строки таблицы значений
---
При перезаполнении таблицы идентификатор строки всегда увеличивается.
Пример - добавить строку в таблицу, удалить и снова добавить - идентификатор у новой строки будет уже другой.
В строке ТаблицаПодбора[" + ИдентификаторСтроки + "].КартинкаСсылка про которую пишет коллега, вы идентификатор используете как индекс. Это так не работает.
Точнее работает, но только один раз.
Награду передайте коллеге из (2).
---
Благодарю, пробежался по циклу после прочтения сообщения 2 и все стало понятно)
Буду использовать тогда свой индекс, который по циклу буду увеличивать и по нему делать поиск в дальнейшем.
В документе есть табличная часть "Измерения". На форме на разных вкладках выведены табличные части, с различными полями, источником каждой тч служит " Измерения".
Как мне схлопнуть нужные тч по нужным полям, при этом оставить "Измерения" без изменений (тоже выведен на форму) ? И при изменении схлопнутой строки, в "Измерения" менялись бы все нужные строки.
Или тут без вариантов, и нужно использовать не один общий объект, а разные?

схлопнуть - сгруппировать
Что бы я хотел увидеть:
Табличная часть, в которой выведены все поля (изображение - ОбщаяТЧ), на примере 3 строки
в тч на вкладках, я бы хотел иметь одну строку(изображение - ВкладкиТЧ), свернуть например по Коду стадии но например при заполнении даты создания, хотелось бы чтобы в общей ТЧ она заполнилась для всех строк с указанным кодом отбора
---
Копируете нужные табличные части, сворачиваете по нужным полям (если под "схлопнуть" подразумевается группировка), очищаете нужные табличные части, заполняете их скопированными свернутыми таблицами. В событиях нужной табличной части настраиваете изменение нужной строки
(1) в "Измерения" менялись бы все нужные строки.. Каким образом Вы будете искать нужные строки в измерениях - нам остается только гадать, но, будем считать, что есть некий идентификатор, по которому можно найти нужную строку.
---
понимать бы что означает схлопнуть
 Как мне схлопнуть нужные тч по нужным полям
---
Ну тут сложно разобраться в вашей задаче, лучше показать на примере что вы хотите реализовать.
---
схлопнуть - сгруппировать
Что бы я хотел увидеть:
Табличная часть, в которой выведены все поля на примере 3 строки
в тч на вкладках, я бы хотел иметь одну строку, свернуть например по Коду стадии но при заполнении даты создания, хотелось бы чтобы в общей ТЧ она заполнилась для всех строк с указанным кодом стадии

На каждой вкладке у тч могут быть свои параметры группировки

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

Задача - ты собираешь деньги с коллектива на подарки.

У тебя есть таблица:
Путин - 5 - Руб
Трамп - 7 - Usd
Кадыров - 9 - Руб

Схлопнули по валюте:
Руб - 14
Usd - 7

Затем ты вносишь изменения в таблицу:
Руб - 12.

Вопрос: Чьи 2 рубля ты просрал - путинские или кадыровские? В какую строку изначальной таблицы вносить изменения, т.е. перед кем извиняться пойдёшь?
Здравствуйте, не могу найти, где в коде происходит формирования списка выбора организаций в справочнике Сотрудники. Там можно выбрать только организации, которые не являются филиалами. Мне нужно сделать так, чтобы можно выбрать любую организацию. У реквизита на форме нет галочки "режим выбора из списка". Если кто-нибудь сталкивался с этим, буду благодарна
---
В справочнике Сотрудники реквизит Головная организация и в параметрах выбора Отбор.ОбособленноеПодразделение = Ложь
---
В справочнике Сотрудники реквизит Головная организация и в параметрах выбора Отбор.ОбособленноеПодразделение = Ложь
---
Спасибо большое! Жаль только, что через расширение нужно менять программно
При импорте заказа в 1С создаётся две номенклатуры с одинаковым наим. и двумя разными спецификациями, в обработке стоит проверка на наименование номенклатуры но все равно создаётся дубликат.
Что нужно сделать что бы две спецификации с наим. "000001№001 и 000001№002" записывались в одну номен к которой привязаны ?

```1c
    Номен = Справочники.Номенклатура.НайтиПоНаименованию(Наименование);
    Если Номен = Справочники.Номенклатура.ПустаяСсылка() Тогда
    Номен = Справочники.Номенклатура.СоздатьЭлемент();

    Если Лев(НаименованиеИТ, 2) = "МП" Тогда
    Номен.Наименование = НаименованиеИТ;
    Номен.НаименованиеПолное = НаименованиеИТ;
    Иначе
    Если ЗаказПВХТипИзделия = Справочники.ТипыИзделий.Алюминий Тогда
    Номен.НаименованиеПолное = "Светопрозрачная конструкция из Алюм" + " №" + Номен.Наименование;
    ИначеЕсли ЗаказПВХТипИзделия = Справочники.ТипыИзделий.ОкнаПВХ Тогда
    Номен.НаименованиеПолное = "Светопрозрачная конструкция из ПВХ" + " №" + Номен.Наименование;
    КонецЕсли;
    КонецЕсли;
    //Номен.НаименованиеПолное = _ПолноеНаименование;
    Номен.НоменклатурнаяГруппа = НоменклатурнаяГруппа;
    Номен.НоменклатурнаяГруппаЗатрат = НоменклатурнаяГруппа;
    Номен.ВидНоменклатуры = ВидНоменклатуры;
    Номен.ВестиУчетПоХарактеристикам = Истина;
    Номен.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
    Номен.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(796); //шт
    Номен.Родитель = Родитель;
    Номен.Изделие = Истина;
    Номен.Площадь = Площадь;
    Номен.НеПодбиратьЦвет = Истина;
    Номен.ИзделиеИзПВХ = Истина;
    Номен.НаименованиеИТ = НаименованиеИТ;
    Номен.НомерЗаказа = Объект.НомерЗаказа;
    Номен.Записать();
    Иначе
    Номен = Номен.ПолучитьОбъект();
    Номен.Наименование = Номен.Наименование;
    Номен.НаименованиеПолное = Номен.НаименованиеПолное;
    Номен.НоменклатурнаяГруппа = НоменклатурнаяГруппа;
    Номен.НоменклатурнаяГруппаЗатрат = НоменклатурнаяГруппа;
    Номен.НеПодбиратьЦвет = Истина;
    Номен.НаименованиеИТ = НаименованиеИТ;
    Номен.НомерЗаказа = Объект.НомерЗаказа;
    Номен.Записать();
    КонецЕсли;
```
---
Ну так приведи ту часть кода где идет разбор Наименований. У тебя Наименование кривое в поиск приходит, а ты удивляешься.
---
Что привязано? Куда привязано? Какие спецификации? Какие номера с наименованиями? Почему две? О чем тут вообще речь?
В коде этого ничего нет!
---
В 1С импортируется заказ с двумя изделиями (Спецификации) у которых наименования этих самых изделий "000001№001 и 000001№002", А наименование номенклатуры которая создаётся при импорте одного заказа с двумя изделиями (2 изд. это к примеру) "МП что-то ещё".
Так вот должна создаваться одна номенклатура с наименованием "МП что-то ещё" в которой будут записаны оба изделия у которых разное наименование.
А получается так что создаётся две номенклатуры с одинаковым наименование в которых записаны по одному изделию (Спецификации)
---
Ну так приведи ту часть кода где идет разбор Наименований. У тебя Наименование кривое в поиск приходит, а ты удивляешься.
---
Действительно проморгал самое главное условие и самое простое, спасибо
Есть расширение. В нём документ. В расширении есть 1 основная роль. Для этой роли даны все права на документ. В пользовательском режиме настроен Профиль групп доступа с этой ролью и даны права пользователю. Но у пользователя право на пометку удаления отсутствует. Почему?

Более того, право на пометку удаления документа в расширении отсутствуют даже у Полных прав. В чем дело? Как это поправить?
---
Вопрос снят. Переборщил в Составе команд в Списке формы.
---
Вопрос снят. Переборщил в Составе команд в Списке формы.
Уважаемые форумчане! Задача такого порядка: есть запись независимого регистра сведений (набор записей), есть имя измерения для отбора. Нужно установить значение этого измерения для дальнейшей обработки записи (удаления по условию). Квадратные скобки не проходят. В СП тоже ничего подходящего не нашел. Есть идеи?
---
```1c
    НаборЗаписей.Отбор["ИмяИзмерения"].Установить(Значение);
```
---
НаборЗаписей.Отбор.ИмяИзмерения.Установить(Значение);
---
Что предполагается под ИмяИзмерения? Наверно я неточно выразился. Имя измерения в строковом виде в переменной. Если бы было что-то вроде УстановитьОтбор(ИмяОтбора,ЗначениеОтбора). Но такого нет.
---
```1c
    НаборЗаписей.Отбор["ИмяИзмерения"].Установить(Значение);
```
---
Спасибо. Все получилось. Самое интересное, что ни в СП и нигде в интернете не описан такой способ применения Отбор. Уже начал в сторону запроса смотреть, но там записи не выберешь.
---
ни в СП и нигде
---
А, пардон, там только про индекс.
---
И я про то же. И в интернете везде только примеры с прямым указанием измерения
Отбор.Контрагенты.Установить()
---
Так любое обращение через точку можно заменить квадратными скобками с литералом, или текстовой переменной... Тут к бабке не ходи.
---
Если бы. К примеру ТекущаяЗапись[НужныйРеквизит] не прокатило.
---
Что такое текущая запись, и что такое нужный реквизит нам видимо надо догадаться.
---
А чего гадать? ТекущаяЗапись - запись регистра сведений, полученная из набора. А НужныйРеквизит - имя измерения этого регистра. Если написать через точку ТекущаяЗапись.Объект (РС Контактная информация) получишь что надо, а ТекущаяЗапись["Объект"] нет.
---
Мешки ворочать все таки проще, правда?
---
Тут мы заложники фантазии разрабов платформы. Хотя обращение по ключу через квадратные скобки – интуитивно понятно.
---
Могу поискать примеры, где это не работает.
---
Находил в стандартной 1С обработке следующую конструкцию Регистр[ТипРегистра].[ИмяРегистра], которая не работала. Но раз это стандарт, значит на какой-то версии это работало!!!!
---
Может тебе полегче мешки взять?
Не может быть такой конструкции. И не было никогда. Менеджеры первого уровня всегда начинались с РегистрыСведений, РегистрыНакопления и т.д. никакого Регистр[РегистрНакопления] никогда не существовало.
Единственное место (на моей памяти), где похожая конструкция с указанием именно ТипаРегистра может существовать - это (заметь, сколько скобочек квадратных я нафигачил - и работает!):
---
Мешки можно и потяжелее :). Из топика получилось неплохое пособие для применения квадратных скобок.
Спасибо всем!!!! Топик закрыт.
---
// Я в типовых встречал и
```1c
    А = А;
```
 На типовых сидят такие же выпускники курсов.
---
Я тоже думаю, что типовые пишут люди, а им как известно свойственно ошибаться...
Как объявить переменную, так чтоб она была видна в общем модуле при http соединении?
---
Обработка http-запроса всё равно идёт в один вызов – передайте вашу переменную в параметрах процедуры/функции.
---
..в не глобальном общем модуле на сервере
---
Обработка http-запроса всё равно идёт в один вызов – передайте вашу переменную в параметрах процедуры/функции.
---
Так сработало
---
удалено
---
Используй ХранилищеОбщихНастроек

Код ниже адаптируй под себя:

```1c
    Функция СохранитьХранимуюНастройку(ИмяНастройки, Значение) Экспорт
    УстановитьПривилегированныйРежим(истина);
    ХранилищеОбщихНастроек.Сохранить("Обмен_МойСклад_1С", ИмяНастройки, Значение, "Обмен_МойСклад_1С");
    КонецФункции

    Функция ВосстановитьХранимуюНастройку(ИмяНастройки) Экспорт
    УстановитьПривилегированныйРежим(истина);
    Возврат ХранилищеОбщихНастроек.Загрузить("Обмен_МойСклад_1С", ИмяНастройки, "Обмен_МойСклад_1С" );
    КонецФункции
```
---
И кто эту переменную будет инициализировать и каким образом?
(просто интересна логика, приведшая к такому потрясающему умозаключению, что такое вообще возможно и необходимо)
---
бот телеграм
---
Ну иди, почитай. https://its.1c.ru/db/metod8dev/content/2392/hdoc
Или тут https://its.1c.ru/db/metod8dev#content:2598:hdoc
---
в статье и говорится, что нельзя объявлять переменные в общих модулях
---
в статье и говорится, что нельзя объявлять переменные в общих модулях Но ты же всё равно хочешь: Как объявить переменную ... в не глобальном общем модуле на сервере
---
в статье и говорится, что нельзяИ что ты думаешь по этому поводу?
---
Параметры сеанса
---
сеансаВ условиях http соединения?
---
Пробую
---
У меня 11 переменных. а уже на 5й 1С начинает тормозить. Может возможно как-нибудь еще сохранить значения??
---
Храни в базе. Константы или РС
---
в константах нельзя хранить список значений
---
Смеялся.
---
Тип "ХранилищеЗначения" это позволяет.
---
В базе данных: в регистре, в справочнике, и т.д.
Отчет на УФ без СКД, отраслевая конфигурация, 8.3.25.1374 .
Необходимо в части строк объединить часть ячеек по столбцам (см. скриншот).

Можно ли как-либо в макете назначить этим столбцам имена вместо хардкода номеров?

```1c
    ПерваяСтрокаОбъединения = ДокументРезультат.ВысотаТаблицы + 1;

    Для Каждого ИнвентарныйНомер Из ИнвентарныеНомера Цикл
    <...>
    БухгалтерияОбъект = БухгалтерияСсылка.ПолучитьОбъект();
    ОбластьСтрока.Параметры.БухгалтерияСсылка = БухгалтерияСсылка;
    ОбластьСтрока.Параметры.БухгалтерияИнвентарныйНомер = БухгалтерияОбъект.Код;
    <...>
    ДокументРезультат.Вывести(ОбластьСтрока);
    КонецЦикла;

    Если ПерваяСтрокаОбъединения < ДокументРезультат.ВысотаТаблицы Тогда
    Для НомерКолонки = 1 По 6 Цикл
    ДокументРезультат.Область(
    ПерваяСтрокаОбъединения, НомерКолонки, ДокументРезультат.ВысотаТаблицы, НомерКолонки).Объединить();
    КонецЦикла;
    КонецЕсли;
```

---

Рассматривал возможность создать в макете именованные области, включающие по одной ячейке -- заголовок соотв. столбца (см. скриншот). Ранее я так успешно делал в Excel, получая затем номер столбца по Range("МояКолонка").Column .
Но, насколько вижу, область, полученная через Макет.ПолучитьОбласть, никак не может получить свое относительное положение в макете.
---
создать в макете именованные области, включающие по одной ячейке -- заголовок соотв. столбца
Макет.Область(<Имя>) получает область, которая знает свое расположение в макете.

```1c
    Если ПерваяСтрокаОбъединения < ДокументРезультат.ВысотаТаблицы Тогда
    Для Каждого ИмяКолонки Из СтрРазделить(
    "НПП,ВидНоменклатуры,Наименование,РегистрационныйНомер,ЗаводскойНомер,ИнвентарныйНомер",",") Цикл
    НомерКолонки = Макет.Область("Колонка"+ИмяКолонки).Лево;
    ДокументРезультат.Область(
    ПерваяСтрокаОбъединения, НомерКолонки, ДокументРезультат.ВысотаТаблицы, НомерКолонки).Объединить();
    КонецЦикла;
    КонецЕсли;
```

Чтобы создать в макете область, отличную от полных строк, нужно выделить нужные ячейки и нажать на кнопку "Назначить имя" (см. скриншот).
---
создать в макете именованные области, включающие по одной ячейке -- заголовок соотв. столбца
Макет.Область(<Имя>) получает область, которая знает свое расположение в макете.

```1c
    Если ПерваяСтрокаОбъединения < ДокументРезультат.ВысотаТаблицы Тогда
    Для Каждого ИмяКолонки Из СтрРазделить(
    "НПП,ВидНоменклатуры,Наименование,РегистрационныйНомер,ЗаводскойНомер,ИнвентарныйНомер",",") Цикл
    НомерКолонки = Макет.Область("Колонка"+ИмяКолонки).Лево;
    ДокументРезультат.Область(
    ПерваяСтрокаОбъединения, НомерКолонки, ДокументРезультат.ВысотаТаблицы, НомерКолонки).Объединить();
    КонецЦикла;
    КонецЕсли;
```

Чтобы создать в макете область, отличную от полных строк, нужно выделить нужные ячейки и нажать на кнопку "Назначить имя" (см. скриншот).
Здравствуйте, коллеги. Помогите, пожалуйста, разобраться с запросом. Есть запрос sql
```1c
    sel ect
    productProduct.default_code "Код номенклатуры",
    promTable.def_code "Код комплектующего",
    productProduct.desc_product_name "Номенклатура",
    coalesce(round(productProduct.lst_price * 1.2, 3), 0) "Цена",
    coalesce(promTable.value, 0) "Себестоимость комплектующего"
    from
    product_product productProduct
    left join
    product_template productTemplate
    on
    productTemplate.id = productProduct.product_tmpl_id
    left join
    product_category productCategory
    on
    productCategory.id = productTemplate.categ_id
    left join
    product_category prCategory
    on
    prCategory.id = productCategory.parent_id
    --------комплектующие
    left join(sel ect
    prod.default_code "default_code",
    prod.id "prod_id",
    mbl.product_id "p_id",
    product.default_code "def_code",
    prop.prid "prid",
    prop.value "value"
    from
    mrp_bom_line mbl
    inner join
    product_product pp
    on
    mbl.product_id = pp.id
    inner join
    mrp_bom mb
    on
    mb.id = mbl.bom_id
    inner join
    product_product prod
    on
    mb.product_id = prod.id
    inner join
    product_product product
    on
    mbl.product_id = product.id
    left join
    (select
    to_number(split_part(ip.res_id, ',', 2), 'L9G999g999.99') "prid",
    ip.value_float "value"
    fr om
    ir_property ip
    inner join (select
    to_number(split_part(ip.res_id, ',', 2), 'L9G999g999.99') "prod_id",
    max(ip.write_date) "write_date"
    fr om
    ir_property ip
    group by
    to_number(split_part(ip.res_id, ',', 2), 'L9G999g999.99')) tempTable
    on
    ip.write_date = tempTable.write_date
    and
    to_number(split_part(ip.res_id, ',', 2), 'L9G999g999.99') = tempTable.prod_id) prop
    on
    mbl.product_id = prop.prid
    ) promTable
    on
    productProduct.id = promTable.prod_id
```
 и при выполнении он зависает, и нагружает всю базу (приходится закрывать процесс). Проблема происходит при выводе поля
```1c
    coalesce(promTable.value, 0) "Себестоимость комплектующего"
```
. Просто соединив две таблицы запрос выполняется нормально, стоит добавить на вывод это поле - все зависает. Подскажите, пожалуйста, в чем ошибка?
---
это postgresqlУ постгри с вложенными запросами весьма трепетные отношения. Переписывай на времянки, ставь индексы.
---
А когда это в тегнутый MS SQL to_number и split_part завезли?
---
это postgresql, неправильно описание сделал
---
попробовал две таблицы сделать, в одной цены товаров, в другой цены комплектующих, и соединение через айди товара, так же зависает. В общем если выводить только одно поле, то все ок (например цену товара или цену комплектующих), если выводить оба поля то зависает. Видимо проблема в разном количестве записей. Если делать без соединения со стоимостью комплектующих, то выводится 10790 строк, если сделать левое соединение то выводится 10320. Не очень понятно, куда исчезают 470 строк.
---
это postgresqlУ постгри с вложенными запросами весьма трепетные отношения. Переписывай на времянки, ставь индексы.
сделал телеграмм бота, в 1С передаются команды и в базе обрабатываются. Все норм

Возникли вопросы:
1) как сделать чтобы команды в боте были не /команда, а как кнопка (см скрин)
2) я передаю из 1С список товаров на складе. Как сделать чтоб это были не /00001 команды, а тоже кнопки. Чтобы формировался список кнопок в зависимости от данных в списке
---
например если взять sendMessage отправка сообщений, у него есть параметр reply_markup, в него передаются кнопки. То есть придет сообщение и там кнопки будут отображаться
---
да помогло.

тут много написано https://infostart.ru/1c/articles/1217332/
---
команды добавляются в BotFather, где редактируется бот есть Edit commads. А вы это как то программно реализовали?
---
команды через Edit commads я сделал. Но я хотел именно полупрозрачные кнопки на экране
---
например если взять sendMessage отправка сообщений, у него есть параметр reply_markup, в него передаются кнопки. То есть придет сообщение и там кнопки будут отображаться
---
да помогло.

тут много написано https://infostart.ru/1c/articles/1217332/