Последние сообщения

#1
7.7 / Re: Все ВошедшиеВзапрос - пояс...
Последний ответ от Злоп - Сегодня в 03:11
какой-то адский ад
если группировок больше - мутузить кучу циклов или писать универсальную какую-то рекурсию.. по получению данных? что-то это как-то не очень...
#2
7.7 / Re: Все ВошедшиеВзапрос - пояс...
Последний ответ от Харлампий Дымба - Сегодня в 01:25
Все и Все ВошедшиеВЗапрос - почти всегда злобное зло. Всегда избегать - если надо, распишу.

Цитата: Злоп от Вчера в 00:26И как это сделать?
//1. Убрать слово Все из запроса;
//2. СписокТоваров - содержит твою специфкацию на 5 позиций.

СписокСкладов = СоздатьОбъект("СписокЗначений");
Пока Запрос.Группировка(1)  = 1 Цикл
 СписокСкладов.ДобавитьЗначение(Запрос.Склад);
КонецЦикла;
Для СчетчикСкладов = 1 По СписокСкладов.РазмерСписка() Цикл
 ТекСклад = СписокСкладов.ПолучитьЗначение(СчетчикСкладов);
 Для СчетчикТоваров = 1 По СписокТоваров.РазмерСписка () Цикл
  ТекТовар = СписокТоваров.ПолучитьЗначение(СчетчикТоваров);
  Запрос.вНачалоВыборки();//люблю перестраховаться 
  Если Запрос.Получить(ТекСклад, ТекТовар) = 1 Тогда
   //отрабатываешь остаток
  Иначе
   //отрабатываешь пустой остаток
  КонецЕсли;
 КонецЦикла;
КонецЦикла;

+Можно чуть поускорять запрос.



#3
7.7 / Re: Все ВошедшиеВзапрос - пояс...
Последний ответ от Злоп - Вчера в 00:26
Условие(Номенклатура в ВыбТМЦ);
если в ВыбТМЦ положить элемент (остаток = 0) - отчет будет пустой.
если в ВыбТМЦ положить список элементов (остаток по всем в списке = 0) - отчет будет пустой.
если в ВыбТМЦ положить элемент (остаток хотя бы по одному из списка ненулевой ) - отчет по всем элементам списка, на одном элементе остатки, на остальных - будут пустой остаток.
.
и тогда вопрос: как черным запросом получить отчет по остаткам товаров из списка, когда по всем товарам в списке - нет остатков?
.
вполне себе задача: есть спецификация допустим из 5 позиций. Снимаю отчет по списку из этих 5 позиций. Хочу получить отчет не пустую выборку, а выборку с пятью элементами, с указанием остаток = 0... И как это сделать?
#4
7.7 / Re: Все ВошедшиеВзапрос - пояс...
Последний ответ от Злоп - Вчера в 00:18
да и Все отрабатывает как-то криво...
Период с ДатаКонца по ДатаКонца;
Фирма = Регистр.ОстаткиТоваров.Документ.Фирма;
Поставщик = Регистр.ОстаткиТоваров.Документ.Клиент;
МОЛ = Регистр.ОстаткиТоваров.Склад.МОЛ;
Склад = Регистр.ОстаткиТоваров.Склад; 
Производитель = Регистр.ОстаткиТоваров.Товар.Производитель;
Страна = Регистр.ОстаткиТоваров.Товар.Производитель.Страна;
Номенклатура = Регистр.ОстаткиТоваров.Товар;
Код = Регистр.ОстаткиТоваров.Товар.Код;
БазоваяЕдиница = Регистр.ОстаткиТоваров.Товар.БазоваяЕдиницаИзмерения;
ВидТовара = Регистр.ОстаткиТоваров.Товар.ВидТовара;
Партия = Регистр.ОстаткиТоваров.Документ;                 
ПризнакДоговора = Регистр.ОстаткиТоваров.Документ.Договор.ТипДоговора;

Стоимость = Регистр.ОстаткиТоваров.Стоимость;
СтоимостьВал = Регистр.ОстаткиТоваров.СтоимостьВал;
Количество = Регистр.ОстаткиТоваров.Количество;

Функция КонОстКоличество = КонОст(Количество);
Функция КонОстСтоимость = КонОст(Стоимость);
Функция КонОстСтоимостьВал = КонОст(СтоимостьВал);
Функция КонОстРезерв = Сумма(0); // болванка, куда подсунуть резерв из другого запроса

Условие(Номенклатура в ВыбТМЦ);
Группировка Склад Без групп;
Группировка Номенклатура Без групп Все;

 --- вот здесь --- ВЫБТМЦ = конкретный элемент справочника. На остатках выбтмц = 0.
Выборка получается пустой, хотя есть "ВСЕ" и написано "Все - в запрос выводятся все значения, и нулевые тоже (используется для группировок по справочникам и временных группировок)."
???
#5
7.7 / Re: Все ВошедшиеВзапрос - пояс...
Последний ответ от Злоп - 14 ноября 2025, 19:51
Что значит "включены данные по которым есть значение хотя бы в одной строке запроса"..? Не понимаю.
Все - понятно, будет включены даже если по переменным запросам нулевые значения.
Если убрать "все" - попадут только те, у которых есть ненулевые значения. Чем это отличается от всевошедшиевзапрос?
#6
7.7 / Re: Все ВошедшиеВзапрос - пояс...
Последний ответ от swa - 14 ноября 2025, 15:12
Цитата:
Все - в запросе будут все возможные значения данных.
ВошедшиеВЗапрос - уточняет условие Все и будут включены данные, по которым есть значение хотя бы в одной строке запроса.
https://1c-pro.org/threads/gruppirovka-vse-voshedshievzapros.29547/

Сам я давно не использую запрос 1с 7.7. 1cpp намного интереснее с прямыми запросами.
#7
7.7 / Все ВошедшиеВзапрос - поясните...
Последний ответ от Злоп - 14 ноября 2025, 03:10
Все - в запрос выводятся все значения, и нулевые тоже (используется для группировок по справочникам и временных группировок).
ВошедшиеВЗапрос - уточняет предыдущее ключевое слово 'Все'. Использование данного слова подразумевает, что в каждую строку запроса будут включены значения данных (в том числе нулевые), для которых есть ненулевое значение хотя бы в одной строке запроса.

Все - понятно.
ВошедшиеВЗапрос - ...ваще не понял.
Может кто-то пояснить по-человечески?
Спасибо.
#8
Дружественные проекты / Re: DialMail новая версия
Последний ответ от swa - 13 ноября 2025, 20:47
Цитата: swa от 13 ноября 2025, 16:14
Цитата: mic22 от 12 ноября 2025, 18:41Компонента HTTP для чего? Есть пример?
HTTP - служит для обращения к сайтам/ресурсам по одноименному протоколу. SSL поддерживается, но нужны доп. файлы.

WinHTTP  = СоздатьОбъект("AddIn.HTTP");
Пока й = 1 по 3 Цикл
    WinHTTP.open("GET", "https://fias.nalog.ru/WebServices/Public/GetAllDownloadFileInfo");
    WinHTTP.setRequestHeader("User-Agent", "1C+Enterprise/8.3");
    WinHTTP.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    WinHTTP.setRequestHeader("SOAPAction", "http://ws.unisoft/FNSNDSCAWS2/Request");
    WinHTTP.send();
   
    Если (WinHTTP.status() = 500)
    или (WinHTTP.status() = 0)
    Тогда
        Продолжить;
    КонецЕсли;
КонецЦикла;
Сообщить(WinHTTP.status());
Сообщить(WinHTTP.ResponseText());


Стормозил...

WinHTTP  = СоздатьОбъект("AddIn.HTTP");
Пока й = 1 по 3 Цикл
    WinHTTP.open("GET", "https://fias.nalog.ru/WebServices/Public/GetAllDownloadFileInfo");
    WinHTTP.setRequestHeader("User-Agent", "1C+Enterprise/8.3");
    WinHTTP.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    WinHTTP.setRequestHeader("SOAPAction", "http://ws.unisoft/FNSNDSCAWS2/Request");
    WinHTTP.send();
   
    Если (WinHTTP.status() = 500)
    или (WinHTTP.status() = 0)
    Тогда
        Продолжить;
    КонецЕсли;
    Прервать;
КонецЦикла;
Сообщить(WinHTTP.status());
Сообщить(WinHTTP.ResponseText());
#9
Дружественные проекты / Re: DialMail новая версия
Последний ответ от swa - 13 ноября 2025, 16:14
Цитата: mic22 от 12 ноября 2025, 18:41Компонента HTTP для чего? Есть пример?
HTTP - служит для обращения к сайтам/ресурсам по одноименному протоколу. SSL поддерживается, но нужны доп. файлы.

WinHTTP  = СоздатьОбъект("AddIn.HTTP");
Пока й = 1 по 3 Цикл
    WinHTTP.open("GET", "https://fias.nalog.ru/WebServices/Public/GetAllDownloadFileInfo");
    WinHTTP.setRequestHeader("User-Agent", "1C+Enterprise/8.3");
    WinHTTP.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    WinHTTP.setRequestHeader("SOAPAction", "http://ws.unisoft/FNSNDSCAWS2/Request");
    WinHTTP.send();
   
    Если (WinHTTP.status() = 500)
    или (WinHTTP.status() = 0)
    Тогда
        Продолжить;
    КонецЕсли;
КонецЦикла;
Сообщить(WinHTTP.status());
Сообщить(WinHTTP.ResponseText());
#10
Дружественные проекты / Re: DialMail новая версия
Последний ответ от swa - 13 ноября 2025, 16:11
Цитата: mic22 от 12 ноября 2025, 18:41А перекодировка самого письма есть при приеме? У меня письма от одного отправителя получаются в разных кодировках.
А как вы письма просматриваете и отправляете?
Сейчас перекодировка письма - дело рук программиста 1С (для перекодировки из UTF-8 см FormEx или DialMail). Посмотреть кодировку присоединенного файла (а текст письма - это тоже присоединенный файл с индексом 1) теперь можно с помощью Метода ПолучитьКодировкуПрисоединенногоФайла(<Индекс>). Новую версию DialMail - скачать можно по ссылке из заглавного поста. Пока так.

По поводу просматривания писем. Сейчас часто текст письма - это HTML. Для полноценного просмотра таких писем нужно 1cpp для встраивания на форму 1С ActiveX для просмотра HTML. Такие формы долго не живут. Рано или поздно крушат старушку 1С 7.7. У меня лично отправка простого письма (без HTML и наворотов) реализована с пом. обыкновенной обработки со строковым элементом поле ввода (неограниченный, многострочный). А получение писем используется только для получения от покупателей/поставщиков внешних файлов.