Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Очищать некоторые колонки строки ТЗ по условию

Как? Допустим есть Кол-во ДопКол-во Цена Вес Дата

Если Дата=00010101 Тогда
Кол-во и ДопКол-во нужно очистить
Как очищать ?
Ответ: При чтении:
если штрихкод криво прочитался - пишете во все колонки ноль.
При активизации строки табчасти: если дата не заполнена - запретили доступность и редактирование нужных вам полей
----------------------------------------------
В этом был вопрос?
Вопрос: Отчет на СКД. УТ10.3. Не отображаются некоторые колонки

В отчёте не отображаются колонки, которые расчитываются на основании одной из колонок, как собственно и сама эта колонка.
Причём у пользователя с полными правами норм, а у ограниченного не показывает. И даже в настройке крестиком помечаются.
Вот этот реквит:
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата КАК ДатаДокументаКредита
На картинке видно, что этот реквизит отсутствует как вариант для выбора (Доступные поля), а те поля, что я подставил в конфигураторе, под этим пользователем помечены крестиком и соответственно эти колонки не выводятся (подо мной выводятся)
Ответ:
Попробуйте добавить группировку детальных записей
Вопрос: Проверить на наличие колонки в DBF файле

При загрузке файлов формата DBF в нескольких файлах существует колонка ДБФ.PR_DDK, а в некоторых нет, есть условие с этой колонкой. При загрузке файл в котором нет колонки ДБФ.PR_DDK выдает ошибку

{Форма.Форма.Форма(270)}: Поле объекта не обнаружено (PR_DDK) Если ДБФ.PR_DDK = 0 Тогда

Надо как то проверить файл на существование этой колонки, может подсказать как это сделать?

1C
1
2
3
4
5
Если ДБФ.PR_DDK = 0 Тогда   
                    ДБФ.GAZ=Сумма;
                    ДБФ.GAZ_K=1;
                    ДБФ.Записать();
                КонецЕсли;
Ответ: синтпом надо смотреть. Подозреваю, что обяз.пары - это (Поле,Значение)
Вопрос: Общий заголовок у нескольких колонок Табличного поля документа

Есть документ, в табличном поле документа колонки, некоторые из них надо объединить под общей шапкой, выглядеть это должно вот так (рисунок):
У меня получилось в принципе сделать такое, 2 строки для ввода данных получились. Поле ввода для колонки"Вода", а под ним 2 поля ввода для колонок "Производственные нужды" и "Хозяйственные нужды".

Можно ли сделать так, чтобы заголовок "Вода" был, а вот строки с полем для ввода - нет?
Мне нужен только заголовок от реквизита.

Вложения:

  • Размер файла:
    107 КБ
    Просмотров:
    9
Ответ:
Большое спасибо! Получилось!
Вопрос: Объединить две таблицы с условием по количеству.

Есть две таблицы с колонками "Количество", соединяемые по некоторым ключевым полям, но может возникнуть ситуация, когда в обеих таблицах есть дублирующиеся строки, соответственно соединение даст комбинацию в 4 строки, а нужно сделать так чтобы присоединяемая таблица передала количество, меньшее чем первая.
Пример:
Таблица1
y  K  13
z  R  15
x  A   1
x  B   2

Таблица2
z  H  14
y  M  11
x  C   2
x  D   1

Итогом является результирующая Таблица3
y  KH  13
z  RM  11
                  и 4 комбинации
x  AC  1
x  AD  1
x  BC  2
x  BD  1

Хотелось бы чтобы при объединении по x получилась такая (или похожая) картинка:
x  AC 1
x  BC 1
x  BD 1
Такое реально? Какое-то условие с итогом по ключевым полям?
Ответ: нет, в каждой строке результирующее количество меньше другого, так что условие как бы и так выполняется.
Вопрос: Отбор в таблице значений по условию четных и нечетных значений

Здравствуйте, учусь работать с таблицами значений, дали задачу, написать форму и что бы в одной тч выводились номера домов и сумма задолжности по дому, а при выборе дома в другой тч отображались номера квартир в выбраном доме и долг по ним - написал, но дальше дали задание, что бы при выборе одного из трех переключателей, в тч с квартирами выводились либо все, либо четные и либо не четные квартиры. Как определить чет или нечет я понимаю, а вот как оперделить и отобрать по этому условию не очень... подскажите пожалуйста. (Обычная форма). чет или нечет пробовал определять так Если НомерКв%2=0 Тогда.. вот что тогда не понимаю .. ))
Там, где ВсеКвартиры = 1 это Чет, ВсеКвартиры = 2 - Нечет.

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
Перем ТаблицаВсехДанных;
Перем Номер;
Функция ПолучитьСписокЛицевыхСчетовПоДому(дДата,уУлица)
    
    ТабЗнач = Новый ТаблицаЗначений;
    ТабЗнач.Колонки.Добавить("лЛицевойСчет");
    ТабЗнач.Колонки.Добавить("нНомерДома");
    ТабЗнач.Колонки.Добавить("НомерКвартиры");
    ТабЗнач.Колонки.Добавить("дДолг");
    ТабЗнач.Колонки.Добавить("дДолгСумма");
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
    
        "ВЫБРАТЬ
        |   икВзаиморасчетыСПотребителямиОстатки.ЛицевойСчет.ОбъектУчета.Здание.Улица,
        |   икВзаиморасчетыСПотребителямиОстатки.ЛицевойСчет.ОбъектУчета.Здание.Номер КАК Номер,
        |   икВзаиморасчетыСПотребителямиОстатки.СуммаОстаток,
        |   икВзаиморасчетыСПотребителямиОстатки.ЛицевойСчет,
        |   икВзаиморасчетыСПотребителямиОстатки.ЛицевойСчет.ОбъектУчета.Номер КАК НомерКв
        |ИЗ
        |   РегистрНакопления.икВзаиморасчетыСПотребителями.Остатки(&нНаДату, ) КАК икВзаиморасчетыСПотребителямиОстатки
        |ГДЕ
        |   икВзаиморасчетыСПотребителямиОстатки.ЛицевойСчет.ОбъектУчета.Здание.Улица = &уУлица";
    
      Запрос.УстановитьПараметр("уУлица",уУлица);
    
      Запрос.УстановитьПараметр("нНаДату",КонецДня(дДата));      
      тзРезультат = Запрос.Выполнить().Выгрузить();
      
 
       Для каждого СтрокаТЧ Из тзРезультат  Цикл
             
             НовСтр = ТабЗнач.Добавить();
             НовСтр.нНомерДома = СтрокаТЧ.Номер;
             НовСтр.дДолгСумма = СтрокаТЧ.СуммаОстаток;
             НовСтр.лЛицевойСчет = СтрокаТЧ.ЛицевойСчет;
             НовСтр.НомерКвартиры = СтрокаТЧ.НомерКв;
             НовСтр.дДолг = СтрокаТЧ.СуммаОстаток;
             
         КонецЦикла; 
                 
         Возврат ТабЗнач;
                 
КонецФункции
 
Процедура ТаблицаДомПриАктивизацииСтроки(Элемент)
     ТаблицаЛС.Очистить();
    
    Номер = ЭлементыФормы.ТаблицаДом.ТекущиеДанные.НомерДома;
    
    ПараметрыОтбора = Новый Структура("нНомерДома",Номер);
    ТаблицаЛСДанных = ТаблицаВсехДанных.Скопировать(ПараметрыОтбора);   
        
    Для каждого Стр Из ТаблицаЛСДанных  Цикл
                             
         НовСтр = ТаблицаЛС.Добавить();
         НовСтр.ЛицевойСчет = Стр.лЛицевойСчет;
         НовСтр.Квартира = Стр.НомерКвартиры;
         НовСтр.Долг = Стр.дДолг;
         
       
    КонецЦикла;
          
КонецПроцедуры
 
Процедура УлицаПриИзменении(Элемент)
    
    ТаблицаВсехДанных = ПолучитьСписокЛицевыхСчетовПоДому(НаДату,Улица);
    ТаблицаДанныхДома = ТаблицаВсехДанных.Скопировать();
    ТаблицаДанныхДома.Свернуть("нНомерДома","дДолгСумма");
    
    ТаблицаЛС.Очистить();
    ТаблицаДом.Очистить();
     
     Для каждого Стр Из ТаблицаДанныхДома  Цикл
         
         НовСтр = ТаблицаДом.Добавить();
         НовСтр.НомерДома = Стр.нНомерДома;
         НовСтр.ДолгСумма = Стр.дДолгСумма;
                 
     КонецЦикла;
     
КонецПроцедуры
 
Процедура ПриОткрытии()
    
   ВсеКвартиры = 0;
    
КонецПроцедуры
 
Процедура ВсеКвартирыПриИзменении(Элемент)
    
     ТаблицаЛС.Очистить();
    
    Если ВсеКвартиры = 0 Тогда
        
        ПараметрыОтбора1 = Новый Структура("нНомерДома",Номер);
        ТаблицаЛСДанных = ТаблицаВсехДанных.Скопировать(ПараметрыОтбора1);
        
        Для каждого Стр Из ТаблицаЛСДанных  Цикл
                             
         НовСтр = ТаблицаЛС.Добавить();
         НовСтр.ЛицевойСчет = Стр.лЛицевойСчет;
         НовСтр.Квартира = Стр.НомерКвартиры;
         НовСтр.Долг = Стр.дДолг;
         
       
        КонецЦикла;
 
        
    ИначеЕсли ВсеКвартиры = 1 Тогда
 
            
        
    ИначеЕсли ВсеКвартиры = 2 Тогда
        
                
    КонецЕсли; 
            
КонецПроцедуры
Ответ: добавь колонку для отбора булево (или число) - Чет; НеЧет
Вопрос: Выбрать количество строк в запросе, равным определенному полю

Добрый день!
Имеется запрос:
Код:
ВЫБРАТЬ
    0 КАК Поле
ПОМЕСТИТЬ Числа

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    3
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1000
    Числа1.Поле + 4 * Числа2.Поле + 16 * Числа3.Поле + 64 * Числа4.Поле + 1 КАК Число
ПОМЕСТИТЬ ВтНомера
ИЗ
    Числа КАК Числа1,
    Числа КАК Числа2,
    Числа КАК Числа3,
    Числа КАК Числа4

УПОРЯДОЧИТЬ ПО
    Число
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1000
    ВтСтроки.Число КАК Колонка,
    ВтКолонки.Число КАК Строка
ПОМЕСТИТЬ ВтДваРяда
ИЗ
    ВтНомера КАК ВтСтроки,
    ВтНомера КАК ВтКолонки
ГДЕ
    ВтСтроки.Число <= &КоличествоКолонок

УПОРЯДОЧИТЬ ПО
    Строка,
    Колонка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВЫРАЗИТЬ(ппк_МощностьСкладаОборотыОбороты.Регистратор КАК Документ.ЗаданиеНаПеревозку) КАК Ссылка,
    ВЫРАЗИТЬ(ппк_МощностьСкладаОборотыОбороты.Регистратор КАК Документ.ЗаданиеНаПеревозку).Склад КАК Склад
ПОМЕСТИТЬ ВтЗдания
ИЗ
    РегистрНакопления.ппк_МощностьСкладаОбороты.Обороты(НАЧАЛОПЕРИОДА(&День, ДЕНЬ), КОНЕЦПЕРИОДА(&День, ДЕНЬ), Регистратор, Площадка = &Площадка) КАК ппк_МощностьСкладаОборотыОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВтЗдания.Ссылка КАК Ссылка,
    ВтЗдания.Склад КАК Склад,
    ЕСТЬNULL(СегментН.Сегмент, ЗНАЧЕНИЕ(Справочник.СегментыНоменклатуры.ПустаяСсылка)) КАК Сегмент
ПОМЕСТИТЬ ВтЗданияСегменты
ИЗ
    ВтЗдания КАК ВтЗдания
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаданиеНаПеревозку.ппк_ТоварыКДоставке КАК Товары
        ПО ВтЗдания.Ссылка = Товары.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураСегмента КАК СегментН
        ПО (Товары.Номенклатура = СегментН.Номенклатура)
            И (Товары.Характеристика = СегментН.Характеристика)
            И (СегментН.Сегмент В
                (ВЫБРАТЬ РАЗЛИЧНЫЕ
                    ппк_МощностьСкладаСрезПоследних.СегментНоменклатуры
                ИЗ
                    РегистрСведений.ппк_МощностьСклада.СрезПоследних(&Дата, Площадка = &Площадка) КАК ппк_МощностьСкладаСрезПоследних))
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1000
    ВтЗдания.Сегмент КАК Сегмент,
    ВтЗдания.Склад КАК Склад,
    ВтЗдания.Ссылка КАК Ссылка,
    КОЛИЧЕСТВО(ВтЗдания.Ссылка) КАК Номер
ПОМЕСТИТЬ ВтЗаданиеНомер
ИЗ
    ВтЗданияСегменты КАК ВтЗдания
        ЛЕВОЕ СОЕДИНЕНИЕ ВтЗданияСегменты КАК ВтЗдания1
        ПО ВтЗдания.Ссылка >= ВтЗдания1.Ссылка
            И ВтЗдания.Склад = ВтЗдания1.Склад
            И ВтЗдания.Сегмент = ВтЗдания1.Сегмент

СГРУППИРОВАТЬ ПО
    ВтЗдания.Склад,
    ВтЗдания.Сегмент,
    ВтЗдания.Ссылка

УПОРЯДОЧИТЬ ПО
    Склад,
    Сегмент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
            ВтЗаданиеНомер.Склад КАК Склад,
            ВтЗаданиеНомер.Сегмент КАК Сегмент,
            ВтЗаданиеНомер.Ссылка КАК Ссылка,
            ВтЗаданиеНомер.Номер КАК Номер,
            ВтДваРяда.Колонка КАК Колонка,
            ВтДваРяда.Строка КАК Строка,
            ЕСТЬNULL(ппк_МощностьСкладаСрезПоследних.КоличествоНорма, 0) КАК МощностьСкладаНорма,
            ЕСТЬNULL(ппк_МощностьСкладаСрезПоследних.КоличествоМаксимум, 0) КАК МощностьСкладаМаксимум
        ИЗ
            ВтЗаданиеНомер КАК ВтЗаданиеНомер
                ЛЕВОЕ СОЕДИНЕНИЕ ВтДваРяда КАК ВтДваРяда
                ПО (ВтЗаданиеНомер.Номер = (ВтДваРяда.Строка - 1) * &КоличествоКолонок + ВтДваРяда.Колонка)
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ппк_МощностьСклада.СрезПоследних(&День, ) КАК ппк_МощностьСкладаСрезПоследних
                ПО ВтЗаданиеНомер.Склад.ппк_Площадка = ппк_МощностьСкладаСрезПоследних.Площадка
                    И ВтЗаданиеНомер.Сегмент = ппк_МощностьСкладаСрезПоследних.СегментНоменклатуры
Результат следующий:

Не пойму как сделать, чтобы количество строк в разрезе склада и сегмента выводилось такое же количество, какое указано в поле МощностьСкладаНорма.

Попробовал следующим образом, но получилось что-то не то:
Код:
ВЫБРАТЬ
    ВтНомера.Число КАК Число,
    ВложенныйЗапрос.Склад КАК Склад,
    ВложенныйЗапрос.Сегмент КАК Сегмент,
    ВложенныйЗапрос.Ссылка КАК Ссылка,
    ВложенныйЗапрос.Номер КАК Номер,
    ВложенныйЗапрос.Колонка КАК Колонка,
    ВложенныйЗапрос.Строка КАК Строка,
    ВложенныйЗапрос.МощностьСкладаНорма КАК МощностьСкладаНорма,
    ВложенныйЗапрос.МощностьСкладаМаксимум КАК МощностьСкладаМаксимум
ИЗ
    ВтНомера КАК ВтНомера
        Правое СОЕДИНЕНИЕ (ВЫБРАТЬ
            ВтЗаданиеНомер.Склад КАК Склад,
            ВтЗаданиеНомер.Сегмент КАК Сегмент,
            ВтЗаданиеНомер.Ссылка КАК Ссылка,
            ВтЗаданиеНомер.Номер КАК Номер,
            ВтДваРяда.Колонка КАК Колонка,
            ВтДваРяда.Строка КАК Строка,
            ЕСТЬNULL(ппк_МощностьСкладаСрезПоследних.КоличествоНорма, 0) КАК МощностьСкладаНорма,
            ЕСТЬNULL(ппк_МощностьСкладаСрезПоследних.КоличествоМаксимум, 0) КАК МощностьСкладаМаксимум
        ИЗ
            ВтЗаданиеНомер КАК ВтЗаданиеНомер
                ЛЕВОЕ СОЕДИНЕНИЕ ВтДваРяда КАК ВтДваРяда
                ПО (ВтЗаданиеНомер.Номер = (ВтДваРяда.Строка - 1) * &КоличествоКолонок + ВтДваРяда.Колонка)
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ппк_МощностьСклада.СрезПоследних(&День, ) КАК ппк_МощностьСкладаСрезПоследних
                ПО ВтЗаданиеНомер.Склад.ппк_Площадка = ппк_МощностьСкладаСрезПоследних.Площадка
                    И ВтЗаданиеНомер.Сегмент = ппк_МощностьСкладаСрезПоследних.СегментНоменклатуры) КАК ВложенныйЗапрос
ПО (ВтНомера.Число <= ВложенныйЗапрос.МощностьСкладаНорма)
И ((ВложенныйЗапрос.Строка-1)*&КоличествоКолонок+ВложенныйЗапрос.Колонка)=ВтНомера.Число
Какое условие должно быть, чтобы когда строк в разрезе склада и сегмента меньше (поле Номер), чем в поле МощностьСкладаНорма, выводились еще строки до этого количества.
Ответ:
Насколько я понял, есть какое-то решение со слотами, когда есть таблица, к примеру с десятью строками с числами от 1 до 10 и полем, к примеру с пустой ссылкой Задания на перевозку, а далее соединяется это все, и если Задания на перевозку нету, то выводится пустая ссылка. Только сам пока не понял как это реализовать правильно.
--- Объединение сообщений, 18 авг 2018 ---
Возможно придется программно таблицу результата запроса обрабатывать, что не хотелось бы.
Вопрос: Программное добавление значения в программно добавленную колонку

Доброго дня.
Дабы не портить конфу программно добавила колонку в ТЧ документа.
Теперь надо в эту колонку программо забить значения, но! я не хочу это делать в процедурах потипу "при выводе строки", т.к. это будет тормозить программу, значения для каждой строки вычисляемые.
Хочу один раз заполнить, например, при Изменении другой колонки или вообще отдельно по кнопке, типа пусть по всем срокам ТЧ пробежит и заполнит.
Уже голову сломала, как это сделать
Ответ:
Чтобы обратится к колонкам, не связанных с данными, я предлагаю такой вариант
Код:
 ЯчейкиСтроки = Элемент.ОформлениеСтроки(Элемент.ТекущаяСтрока).Ячейки;
Далее в коллекции будут доступны все ячейки. А у них есть свойства "Значение" и "Текст". Можно так попробывать, я так получаю тексты из ячеек, на запись правда не пробовал, может и получится
ПС: Элемент - это само табличное поле. И если грамотно сделать запрос, т.е. поля в условии проиндексированы, то тормозить ничего не должно в "ПриВыводеСтроки"
Вопрос: Как программно получить имена всех колонок реквизита формы, имеющего тип ДанныеФормыКоллекция?

как программно получить имена всех колонок реквизита формы, имеющего тип ДанныеФормыКоллекция?
Имеется реквизит упр формы, типа таблица значений(Данные формы коллекция), в нем есть колонки.
некоторые из них не видны и не отображаются на форме, некоторые не видны =т.е. видимость = ложь, а некоторые вообще никогда не были добавлены на отображение.
т.е. через
1C
1
Элементы.ИмяИнтересующегоМеняРеквизита.ПодчиненныеЭлементы
- их не получить
/////////////////////////////////
таки вот, этих колонок 37 штук и переписывать ручками что-то не хоцца
как можно получить имена всех колонок реквизита имеющего тип "ДанныеФормыКоллекция".
М.б переделать его в полноценную ТЗ и выгрузить колонки, но чета не переделывается он в ТЗ,
никак ни на сервере ни на Клиент(что и пнятно)
как бытЬ?
Ответ: Объект.Tabel.выгрузить().Колонки
Вопрос: СКД. В вертикальной группировке появляется пустая колонка

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

Догадываюсь, что где то в настройках группировки надо копаться, но никак не могу понять, что это за колонка.
Подскажите куда смотреть?
Ответ: Отчего может появляться пустая колонка?