arefaste/1C_Forums huggingface dataset:
Добрый день, подскажите как программно изменять тип реквизита в тч документа. Например реквизит составного типа (Спр.Номенклатура и Строка) пользователь вводит наименование с клавиатуры если автоподбор по спр Номеклатура ничего не нашел, то оставлять в поле что ввел пользователь и продолжить редактирование документа дальше
---
при начале редактирования смотреть, какого типа элемент в поле, Если строка - ставить ограничение типа по строке, если номенклатура - по номенклатуре. Фактически тип поля не меняется при этом - просто вводимое значение ограничивается тем, что вводится.

С другой стороны, можно обрабатывать событие при вводе текста, а не при окончании ввода. Тогда всегда ограничивать тип справочником, а при вводе текста смотреть, что вводится. Если находится номенклатура - устанавливать ее, если не находится - просто в данные выбора передавать введенный текст.
---
Пробую сделать так:

```1c
    &НаКлиенте
    Процедура СоставНоменклатураСсылкаСтрокаОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
    Элементы.СоставНоменклатураСсылкаСтрока.ОграничениеТипа = Новый ОписаниеТипов("Строка");
    КонецПроцедуры
```

но тогда меняется тип у всей колонки, а нужно чтоб только у текущей строки.
---
при начале редактирования смотреть, какого типа элемент в поле, Если строка - ставить ограничение типа по строке, если номенклатура - по номенклатуре. Фактически тип поля не меняется при этом - просто вводимое значение ограничивается тем, что вводится.

С другой стороны, можно обрабатывать событие при вводе текста, а не при окончании ввода. Тогда всегда ограничивать тип справочником, а при вводе текста смотреть, что вводится. Если находится номенклатура - устанавливать ее, если не находится - просто в данные выбора передавать введенный текст.
Добрый день!

Подскажите, пожалуйста, решение:

Есть независимый и не подчиненный регистратору регистр сведений с 1 измерением "документ", в который постоянно добавляются и удаляются новые записи.

У меня есть список документов, которые необходимо удалить оттуда. В связи с тем, что их много, мне кажется глупо удалять каждую запись по отбору.

Если я делаю блокировку данных, чтобы прочитать запросом текущие данные и удалить ненужные мне документы, то на тот момент времени не получится добавить туда запись.

Пробовал установить отбор через список:

НаборЗаписей.Отбор.Документ.ВидСравнения = ВидСравнения.ВСписке;

Вылетает ошибка: Недопустимый тип сравнения

Как оптимально решить эту проблему? Заранее спасибо!
---
Оптимизировать никак. Только через установку отбора по конкретным комбинациям измерений. Отбор только на равенство. Т.е. придется в цикле. Еще можно полностью перезаписать весь регистр если это проще (без установки отбора).
Но обычно подобной необходимости не возникает. Возможно, вы выбрали неправильный инструмент для вашей задачи.
---
регистр сведений с 1 измерением "документ"
В свойствах измерения установлено "Ведущий"?
Если установлено, то просто удаляете документы и всё.
---
Нет, "Ведущее" не установлено. Просто удалить это отбор в цикле?

Извините, не сразу понял. Сами документы удалять нельзя, нужно удалить ссылки на них из регистра.
---
Допустимый вид сравнения для измерения - только "Равно", если я не ошибаюсь...поэтому - каждую запись по отбору...
Если записей действительно много и удаление повлияет на текущую работу - сделать в момент наименьшей загрузки ИБ.
---
Оптимизировать никак. Только через установку отбора по конкретным комбинациям измерений. Отбор только на равенство. Т.е. придется в цикле. Еще можно полностью перезаписать весь регистр если это проще (без установки отбора).
Но обычно подобной необходимости не возникает. Возможно, вы выбрали неправильный инструмент для вашей задачи.
---
Если таки нужно удалять большие объемы, то просто удаляйте пачками в транзакциях. Будет быстро.
Добрый день!
Возник следующий вопрос: есть текст такого формата

Start *число*

Текст1
Текст2
Текст3
Finish

Необходимо выдрать только вот эту часть - Текст1 Текст2 Текст3, при этом *число* всегда разное и перед Текст1 всегда пустая строка.

Пробовал и через "Найти", и парой способов с форума, ничего не получилось.
---
да, извиняюсь. Времени в обрез, вот код:

```1c
    Счетчик = 1;
    Пока Стр <> Неопределено Цикл

    Если Счетчик < 3 Тогда
    Счетчик = Счетчик + 1;
    Стр = Файл.ПрочитатьСтроку();
    Продолжить;
    КонецЕсли;
```
---
Необходимо выдрать только вот эту часть - Текст1 Текст2 Текст3, при этом *число* всегда разное и перед Текст1 всегда пустая строка.
Start *число*

Текст1

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

```1c
    СтрТекста=СтрПолучитьСтроку(Текст,Индекс);
```
---
Я обрабатываю много файлов в одной папке и количество строк всегда разное.
---
в (4) приведен рабочий пример же. можете его скопировать и использовать на свое усмотрение. если вм результат не в строку надо а в массив, то просто добавляйте построчно в массив, а не суммируйте
---
как вариант для 8.2:

```1c
    ИсходнаяСтрока = "Что-то там
    |еще есть в начале
    |Start 1
    |
    |Текст1
    |Текст2
    |Текст3
    |Finish
    |еще есть
    |в конце";

    СтрокаРезультат = ";
    СтрокаНайдена = Ложь;
    Для НомерСтроки = 1 По СтрЧислоСтрок(ИсходнаяСтрока) Цикл
    Если Не СтрокаНайдена Тогда
    Если Найти(СтрПолучитьСтроку(ИсходнаяСтрока,НомерСтроки), "Start") > 0 Тогда
    СтрокаНайдена = Истина;
    НомерСтроки = НомерСтроки + 1;
    КонецЕсли;
    Продолжить;
    КонецЕсли;
    Если (Найти(СтрПолучитьСтроку(ИсходнаяСтрока,НомерСтроки), "Finish") > 0) Тогда
    СтрокаНайдена = Ложь;
    Прервать;
    КонецЕсли;
    СтрокаРезультат = СтрокаРезультат + СтрПолучитьСтроку(ИсходнаяСтрока,НомерСтроки);
    КонецЦикла;
```

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

```1c
    Счетчик = 1;
    Пока Стр <> Неопределено Цикл

    Если Счетчик < 3 Тогда
    Счетчик = Счетчик + 1;
    Стр = Файл.ПрочитатьСтроку();
    Продолжить;
    КонецЕсли;
```
---
Я ничего не понял в решении. Ну, вы прочитали строку Старт и одну пустую. И?
Неполный код, видимо.
---
у меня читает все строки, перед условием идет
```1c
    стр = файл.ПрочитатьСтроку();
```
, далее в цикле уже идут не относящиеся к вопросу преобразования строк.
---
А, ну так в вашем примере после условия "Если Счетчик < 3" ПрочитатьСтроку() стоит.
Всем привет. Задам глупый вопрос так как я маленький еще программист :). Нужно сделать отчет в СКД, что бы он выводил СФ с одинаковыми входящими номерами. Создал временную таблицу со всеми СФ как теперь наложить правильно условие, что бы он мне вывел только дублирующие номера?
---
```1c
    "ВЫБРАТЬ
    | СУММА(ВложенныйЗапрос.Поле1) КАК Поле1,
    | ВложенныйЗапрос.НомерИсходногоДокумента КАК НомерИсходногоДокумента
    |ПОМЕСТИТЬ ТТ
    |ИЗ
    | (ВЫБРАТЬ
    | 1 КАК Поле1,
    | СчетФактураВыданный.НомерИсходногоДокумента КАК НомерИсходногоДокумента
    | ИЗ
    | Документ.СчетФактураВыданный КАК СчетФактураВыданный) КАК ВложенныйЗапрос
    |
    |СГРУППИРОВАТЬ ПО
    | ВложенныйЗапрос.НомерИсходногоДокумента
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ТТ.НомерИсходногоДокумента КАК НомерИсходногоДокумента
    |ИЗ
    | ТТ КАК ТТ
    |ГДЕ
    | ТТ.Поле1 > 1"
```
---
```1c
    "ВЫБРАТЬ
    | СУММА(ВложенныйЗапрос.Поле1) КАК Поле1,
    | ВложенныйЗапрос.НомерИсходногоДокумента КАК НомерИсходногоДокумента
    |ПОМЕСТИТЬ ТТ
    |ИЗ
    | (ВЫБРАТЬ
    | 1 КАК Поле1,
    | СчетФактураВыданный.НомерИсходногоДокумента КАК НомерИсходногоДокумента
    | ИЗ
    | Документ.СчетФактураВыданный КАК СчетФактураВыданный) КАК ВложенныйЗапрос
    |
    |СГРУППИРОВАТЬ ПО
    | ВложенныйЗапрос.НомерИсходногоДокумента
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ТТ.НомерИсходногоДокумента КАК НомерИсходногоДокумента
    |ИЗ
    | ТТ КАК ТТ
    |ГДЕ
    | ТТ.Поле1 > 1"
```
---
Или так:

```1c
    ВЫБРАТЬ
    СчетФактураПолученный.НомерВходящегоДокумента,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СчетФактураПолученный.Ссылка) КАК Ссылка
    ИЗ
    Документ.СчетФактураПолученный КАК СчетФактураПолученный

    СГРУППИРОВАТЬ ПО
    СчетФактураПолученный.НомерВходящегоДокумента

    ИМЕЮЩИЕ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СчетФактураПолученный.Ссылка) > 1
```
Доброго времени суток. Есть следующий код:

```1c
    ...
    ТабДок = Новый ТабличныйДокумент;

    ...
    СекцияВеществаУровень = Макет.ПолучитьОбласть("ВеществаУровень");
    ...
    СтартШрифт = СекцияВеществаУровень.ТекущаяОбласть.Шрифт;

    СекцияВеществаУровень.ТекущаяОбласть.Защита = ложь;
    СекцияВеществаУровень.ТекущаяОбласть.Шрифт = Новый Шрифт(СтартШрифт,,,истина);

    ТабДок.Вывести(СекцияВеществаУровень);

    СекцияВеществаУровень.ТекущаяОбласть.Шрифт = Новый Шрифт(СтартШрифт,,,ложь);
```

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

СекцияВеществаУровень.Область("ВеществаУровень").Шрифт = Новый Шрифт(СтартШрифт,,,истина);

ТабДок.Вывести(СекцияВеществаУровень);

СекцияВеществаУровень.Область("ВеществаУровень").Шрифт = Новый Шрифт(СтартШрифт,,,ложь);

Я думал что получить область из макета достаточно чтоб менять шрифт. Но эта область тоже является Табличным документом,и из неё опять надо получить область, к которой уже шрифт применить можно. Как-то так. Если кто внятно сможет объяснить, сделайте это пожалуйста :)
Всем спасибо!
---
Делать-то шрифт, наверно, надо не в полученной области макета, а в выведенной
области ТабДок.

(2) Зачем такие мучения? Почему не задавать область циферками?

```1c
    ОбластьВыделения = ТабДок.Область(ТабДок.ВысотаТаблицы, ТабДок.ширинаТаблицы);
    ОбластьВыделения.Шрифт=Новый Шрифт(ОбластьВыделения.Шрифт,,,Истина,);
```
---
Я как думаю: получил область макета,изменил шрифт, заполнил данными и вывел в ТабДок.
Когда делаешь макет, ведь можно шрифт менять у ячейки. А программно это выглядит так:
СекцияВеществаУровень.Область("R1C1").Шрифт = Новый Шрифт(СтартШрифт,,,истина);
Но тоже не работает.
 Попробую ваш вариант.
---
Циферки ведь меняться могут... этот пример выделяет в некоторых ячейках таблицы по условию
---
Здравствуйте. Я вот так делаю:
ОбластьВыделения="R"+Формат(ТабДок.ВысотаТаблицы,"ЧГ=0")+"C"+Формат(ТабДок.ширинаТаблицы,"ЧГ=0");
табДок.Область(ОбластьВыделения).Шрифт=Новый Шрифт(табДок.Область(ОбластьВыделения).Шрифт,,,Истина,);
---
про именованные ячейки не слышали?
---
Проблема решена.
Как я думал оказалось правильным: "получил область макета,изменил шрифт, заполнил данными и вывел в ТабДок"
Неверным оказалась релаизация. Вот рабочий вариант:

СекцияВеществаУровень.Область("ВеществаУровень").Шрифт = Новый Шрифт(СтартШрифт,,,истина);

ТабДок.Вывести(СекцияВеществаУровень);

СекцияВеществаУровень.Область("ВеществаУровень").Шрифт = Новый Шрифт(СтартШрифт,,,ложь);

Я думал что получить область из макета достаточно чтоб менять шрифт. Но эта область тоже является Табличным документом,и из неё опять надо получить область, к которой уже шрифт применить можно. Как-то так. Если кто внятно сможет объяснить, сделайте это пожалуйста :)
Всем спасибо!
Доброго времени суток всем читающим! Люди помогите разобраться с проблемкой, пишу внешнюю обработку по выгрузке из 1с 7.7 Рарус в SetRetail 10, выгружается номенклатура по остаткам на точку актуальности. Все заполняется кроме родителя верхнего уровня, делаю вот так:

```1c
    ВерхРодитель =ЗапросОст.Номенклатура;
    Пока ПустоеЗначение(ВерхРодитель.Родитель) = 0 Цикл
    ВеткаРодитель = ВеткаГруппа.СоздатьПодчиненныйЭлемент("parent-group");
    ВеткаРодитель.УстановитьАтрибут("id", ВерхРодитель.Код);
    ВеткаРодительИмя = ВеткаРодитель.СоздатьПодчиненныйЭлемент("name");
    ВеткаРодительИмя.Значение = ВерхРодитель.Наименование;
    КонецЦикла;
```

в отладчике ЗапросОст.Номенклатура отображается корректно и всех родителей можно проследить, а вот ВерхРодитель.Код и ВерхРодитель.Наименование пустые. Что я делаю не так?
---
можно использовать Справочник.Уровень

```1c
    Спр=СздатьОъект("Справочник.Номенклатура");
    Спр.НайтиЭлемент (СвТмп);
    Уров=Спр.Уровень();
    Если Уров>1 Тогда
    Пока Уров<>1 Цикл
    Спр.НайтиЭлемент(Спр.Родитель);
    ЗначРодитель=Спр.Наименование;
    Если Спр.ЭтоГруппа()=1 Тогда
    Грп=ЗначРодитель;
    КонецЕсли;
    Сообщить("Родитель="+Грп); //Грп - это то, что вам нужно (наименование родителя)
    Уров=Уров-1;
    КонецЦикла;
    КонецЕсли;
```

Этот код использован мной неоднократно при написании различных отчетов в 1с 7.7.
---
```1c
    ВерхРодитель =ЗапросОст.Номенклатура;
    Пока ВерхРодитель.Выбран() Цикл
    ВеткаРодитель = ВеткаГруппа.СоздатьПодчиненныйЭлемент("parent-group");
    ВеткаРодитель.УстановитьАтрибут("id", ВерхРодитель.Код);
    ВеткаРодительИмя = ВеткаРодитель.СоздатьПодчиненныйЭлемент("name");
    ВеткаРодительИмя.Значение = ВерхРодитель.Наименование;
    ВерхРодитель =ВерхРодитель.Родитель;
    КонецЦикла;
```

Если саму номенклатуру из ЗапросОст.Номенклатура не надо включать, то первый оператор заменить на:

```1c
    ВерхРодитель =ЗапросОст.Номенклатура.Родитель;
```
---
Используй Выбран() вместо ПустоеЗначение(). ПустоеЗначение глючит в некоторых случаях.
---
Так же выдает пустые строки
---
Но в отладке показывает, что есть значения. сделал вот так
```1c
    ВерхРодитель = ЗапросОст.Номенклатура;
    Если ВерхРодитель.Выбран() = 0 Тогда
    ВерхРодитель =ВерхРодитель.Родитель;
    ВеткаРодитель = ВеткаГруппа.СоздатьПодчиненныйЭлемент("parent-group");
    ВеткаРодитель.УстановитьАтрибут("id", ВерхРодитель.Код);
    ВеткаРодительИмя = ВеткаРодитель.СоздатьПодчиненныйЭлемент("name");
    ВеткаРодительИмя.Значение = ВерхРодитель.Наименование;
    КонецЕсли;
```
---
можно использовать Справочник.Уровень

```1c
    Спр=СздатьОъект("Справочник.Номенклатура");
    Спр.НайтиЭлемент (СвТмп);
    Уров=Спр.Уровень();
    Если Уров>1 Тогда
    Пока Уров<>1 Цикл
    Спр.НайтиЭлемент(Спр.Родитель);
    ЗначРодитель=Спр.Наименование;
    Если Спр.ЭтоГруппа()=1 Тогда
    Грп=ЗначРодитель;
    КонецЕсли;
    Сообщить("Родитель="+Грп); //Грп - это то, что вам нужно (наименование родителя)
    Уров=Уров-1;
    КонецЦикла;
    КонецЕсли;
```

Этот код использован мной неоднократно при написании различных отчетов в 1с 7.7.
---
Спасибо) очень удобно)
Добрый день!
Есть форма записи УФ. На клиенте выполняется код, скорее всего в закрытом модуле.
Требуется написать код, который изменит запись на сервере и выполнит код из формы.

Какой план действий?
Получить форму записи регистра, изменить в ней реквизит и записать?
Пока с реализацией туго.
На правильном пути, пример кода?
---
Проверил, код выполняется в контексте сервера, метод предупреждение не работает!
Ну логично на сервере форм нет, можно только из формы объект на сервер передать!
Остается только свой код писать!
---
посмотреть, какой код выполняется на форме и скопипастить его.
---
так дело в том что там идет обращение в закрытый модуль, который отсутствует в конфигурации!
---
там идет обращение в закрытый модульА что мешает обратиться к закрытому модулю, скопировав код обращения из формы? Или код формы тоже закрыт? Или закрытый модуль - клиентский?
---
наверно тем, что туда (скорее всего) передается форма. А на сервере форму не получить.

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

2. Вариант - если на 8.3 - использовать расширение и там сделать с формой всё что угодно

Если возможен вариант 2, то, ИМХО, он предпочтительнее.
---
не вариант, там же на клиенте метод использоваться будет 2 раза.
Наверно код придется свой писать и вопрос решен.

(9) а что конкретно мало? Да с формами игра идет, еще разбираюсь.
---
Проверил, код выполняется в контексте сервера, метод предупреждение не работает!
Ну логично на сервере форм нет, можно только из формы объект на сервер передать!
Остается только свой код писать!
Создал в конфигурации УТ 10.3 необходимую мне роль.
Добавил права на использование и просмотр отчета, но пользователь с этой ролью не может открывать отчеты (скрины приложил).
Подскажите, может ещё какие-то права нужны?
---
Все отчеты в УТ 10.3 обращаются к отчету "УниверсальныйОтчет". На него необходимо дать права для использования других отчетов.
---
Предположу, что при открытии формы отчёта происходит то, на что у данного юзера нет прав. По коду посмотрите.
---
Кроме прав на сам отчет нужны еще права на те регистры с которыми отчет работает. или документы. В общем смотри с чем работает отчет и чего нет в правах данного пользователя.
---
Все отчеты в УТ 10.3 обращаются к отчету "УниверсальныйОтчет". На него необходимо дать права для использования других отчетов.
Коллеги, подскажите, кто и как реализовывал получение свойства файла - владелец (учетная запись в домене) в Windows?

Нашел рабочий вариант в C#
string user = System.IO.File.GetAccessControl(path).GetOwner(typeof(System.Security.Principal.NTAccount)).ToString();
---
Да, вернулся к теме и всё просто.

```1c
    Скрипт = Новый COMОбъект("ADsSecurityUtility");

    Сообщить(Скрипт.GetSecurityDescriptor(ИмяФайла, 1, 1).owner);
```

Но тут исключение надо отработать в случае, например, отсутствия файла.
---
Есть VB скрипты https://blogs.technet.microsoft.com/heyscriptingguy/2004/10/07/how-can-i-determine-the-owner-of-a-file/
для файла
```1c
    On Error Resume Next
    strComputer = “.”
    Set objWMIService = GetObject(“winmgmts:” _
    & “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2”)
    strFile = “C:\Scripts\My_script.vbs”
    Set colItems = objWMIService.ExecQuery _
    (“ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='” & strFile & “‘}” _
    & ” WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner”)
    For Each objItem in colItems
    Wscript.Echo objItem.ReferencedDomainName
    Wscript.Echo objItem.AccountName
    Next
```

для папки
```1c
    On Error Resume Next
    strComputer = “.”
    Set objWMIService = GetObject(“winmgmts:” _
    & “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2”)
    strFile = “C:\Scripts”
    Set colItems = objWMIService.ExecQuery _
    (“ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='” & strFile & “‘}” _
    & ” WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner”)
    For Each objItem in colItems
    Wscript.Echo objItem.ReferencedDomainName
    Wscript.Echo objItem.AccountName
    Next
```

В 1С подключение будет выглядеть как-то так:

```1c
    ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2");
```

Альтернативный вариант - разбирать результаты команд типа

```1c
    DIR /Q "c:\windows\system32\notepad.exe"
```

или более удобной для разбора

```1c
    wmic datafile where name='c:\\windows\\system32\\notepad.exe'
```

П.С. Возможно, кавычки в скопипащеных VB-скриптах придется заменить на стандартные.
---
Да, вернулся к теме и всё просто.

```1c
    Скрипт = Новый COMОбъект("ADsSecurityUtility");

    Сообщить(Скрипт.GetSecurityDescriptor(ИмяФайла, 1, 1).owner);
```

Но тут исключение надо отработать в случае, например, отсутствия файла.
Приветствую! Столкнулся вот с таким сообщением. Подозреваю, что где-то в наименовании или символ непечатаемый или еще какая хрень. Не могу понять, как найти элемент.
Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1080)}: Ошибка при вызове метода контекста (Прочитать): Ошибка разбора XML: - [4,67142104]
Фатальная ошибка:
PCDATA invalid Char value 28
SystemId: file://S:/!Работа/123/номенклатура.xml
---
Подозреваю, что где-то в наименовании или символ непечатаемый или еще какая хрень. Не могу понять, как найти элемент. Как вариант: http://infostart.ru/public/286257/
---
Подозреваю, что где-то в наименовании или символ непечатаемый или еще какая хрень. Не могу понять, как найти элемент. Как вариант: http://infostart.ru/public/286257/
---
Спасибо большое, оказалось то, что нужно. В одной позиции номенклатуры в поле "Артикул" был кривой символ. Быстро нашел, поправил. :)
---
Может здесь:
http://www.forum.mista.ru/topic.php?id=712058
---
Что такое символ 28 в XML?
Добрый день, коллеги.

Необходимо в отчете СКД на УФ после изменения варианта отчета выполнить определенные действия в зависимости от выбранного пользователем варианта отчета.
Сам список вариантов отчета получить удалось (с помощью ВариантыНастроек схемы компоновки данных). Вызываю окно выбора ВыбратьЭлемент(). Но как теперь после выбора пользователем варианта выполнить действия, которые система сама производит при выборе пользователем варианта - отображение быстрых настроек выбранного варианта и так далее. Кто может подсказать?
---
ПриЗагрузкеВариантаНаСервере(<Настройки>)
---
ПриЗагрузкеВариантаНаСервере(<Настройки>)
---
Спасибо!
---
Нет ни у кого никаких мыслей?
Есть обработка - Универсальный подбор и обработка объектов. Выбираю Объектом поиска номенклатура. Найденных объектах отмечаю нужные. В разделе обработки: Произвольный алгоритм создал новою настройку. Мне надо в строке найти определенный символ, или букву, или слово и заменить на нужное. Пользуюсь функцией "СтрЗаменить". Итог не получается записать результат.
---
```1c
    Объект.Наименование = СтрЗаменить(Объект.Наименование, "LIS ", "LISK ");
    Объект.Записать();
```

Открываешь чудесный мир программирования? :)
---
```1c
    Объект.Наименование = СтрЗаменить(Объект.Наименование, "LIS ", "LISK ");
    Объект.Записать();
```

Открываешь чудесный мир программирования? :)
---
Да, пытаюсь потихоньку. Блин а я все привязывал к справочнику. Спасибо большое
Как в регистре накоплений остатки вывести регистратор в результат запроса?
Пишу запрос нужно что бы он выводил например номенклатуру, ее остаток и в каком это документе, В оборотах знаю, что регистратор можно включить в параметрах виртуальной таблицы. Как его включить в остатках? использовать остатки и обороты пожалуйста не предлагать
---
Документ 1 сделал приход на 5 рублей
Док 2 приход на 20 руб.
Док 3 расход на 1 руб.

Остаток - 24 рубля.
Кто по вашему регистратор?
использовать остатки и обороты пожалуйста не предлагать
Ну ОК. Тогда ответ - нельзя в виртуальной таблице "Остатки" вывести регистратор!
---
Документ 1 сделал приход на 5 рублей
Док 2 приход на 20 руб.
Док 3 расход на 1 руб.

Остаток - 24 рубля.
Кто по вашему регистратор?
использовать остатки и обороты пожалуйста не предлагать
Ну ОК. Тогда ответ - нельзя в виртуальной таблице "Остатки" вывести регистратор!
---
спасибо