Клиентское приложение (Толстый клиент) для сервиса изучения методов платформы 1С:Предприятие 8 (+ конструктор запросов)

Опубликовал bpc222 в раздел Программирование - Практика программирования

Клиентское приложение для работы с веб-сервисом
IT-Решение: Консоль изучения методов платформы 1С:Предприятие 8
в режиме толстый клиент.
Подготовка к аттестации 1С:Специалист on-line!
Тестовые задания по различным видам учета!
Подсказки для оптимального решения!

Уважаемые коллеги!

Представляем вашему вниманию клиентское приложение для бесплатного веб-сервиса "Консоль изучения методов платформы 1С:Предприятие 8" - конфигурацию, разработанную на платформе 8.2 и предназначенную для интерактивного обучения методам и приемам разработки в среде 1С.

Страница сервиса на infostart.ru: http://infostart.ru/public/192077/ 


Работа с веб-сервисом возможна с использованием конструктора запросов 1С (аналогично Клиентскому приложению для самоучителя языка запросов 1С 8).

При входе в конфигурацию произоводится аутентификация на веб-сервисе под логином пользователя.

Для регистрации нового пользователя на веб-сервисе необходимо использовать логин: guest, пароль пустой.

Информацию о составе учебной конфигурации, ее объектах и их взаимосвязях можно посмотреть на "Схеме базы данных" (кнопка в левом верхнем углу консоли).

Решение задачи пользователь представляет в поле "Ваше решение". В процессе решения задач для написания запросов может быть использован Конструктор запросов. В поле "Результат" отображается результат проверки решения задачи. Так же в форме основной обработки представлена персональная статистика и общий рейтинг участников (ТОП 100). Все задачи должны решатся последовательно. Переход к следующей задаче, не решив предыдущую, невозможен.

 

Важно! 
Для получения навыков написания простых и сложных запросов рекомендуем воспользоваться бесплатным сервисом Консоль изучения языка запросов 1С:Предприятие 8).

 

Файлы

Наименование Файл Версия Размер Кол. Скачив.
Дистрибутив поставки
.exe 422,36Kb
02.07.13
162
.exe 422,36Kb 162 Скачать

См. также

Комментарии

1. bpc222 27.06.2013 18:40
Уважаемые разработчики.

Начал работу новый сервис: Консоль изучения методов платформы 1С:Предприятие 8.
Месяц будет "крутиться" в тестовом режиме, ваши решения будут сохранены.
Задания второго раздела будут опубликованы на днях.
Это клиентское приложение - клиент для сервиса. Его задача - предоставить Вам возможность использования Консоли запросов для разработки прикладных решений.

Ждем Ваших отзывов и предложений. Спасибо.
# Ответить
2. ivanov660 28.06.2013 09:01
А что в веб варианте не сделали консоль запросов? Взяли хот-бы Больсунова. Не удобно онлайн сервисом пользоваться, по крайней мере подсказки какие-нибудь выдали?
Ответили: (3)
# Ответить
3. bpc222 28.06.2013 09:16
(2) ivanov660,

рассмотрим возможность, спасибо.
# Ответить
4. Egor.ZenNoches 28.06.2013 14:55
Круть !
# Ответить
5. kuza_87 (файл скачал) 01.07.2013 08:29
Дошел до 6-го задания. Пишет что неверное решение. Не могу понять где ошибка. Выполнено всё верно
Вот код
ЗапросЦены = Новый Запрос;
ЗапросЦены.Текст =
"ВЫБРАТЬ
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.Цена,
| ЦеныНоменклатуры.Период КАК Период
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|
|УПОРЯДОЧИТЬ ПО
| Период УБЫВ";
ТЗЦены = ЗапросЦены.Выполнить().Выгрузить();

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

КонецЕсли;

КонецЦикла;
НаборЗаписей.Записать();

КонецЕсли;

КонецЦикла;
Ответили: (7)
# Ответить
6. kuza_87 (файл скачал) 01.07.2013 08:30
Я нигде не усмотрел ошибку
# Ответить
7. bpc222 01.07.2013 09:54
(5) kuza_87,


Одно из условий задания: "Следует учесть, что записывать в регистр нужно лишь изменившиеся на дату документа цены, учитывая периодичность регистра "В пределах дня"

Скажите, Ваше решение удовлетворяет этому условию?
# Ответить
8. kuza_87 (файл скачал) 01.07.2013 11:11
Разобрался, извините. Делал спросони)))
Ответили: (11)
# Ответить
9. kuza_87 (файл скачал) 01.07.2013 11:39
А в следующем задании что не так? Задание элементарное. Вот текст кода

ВыборкаДоков = Документы.ПриходнаяНакладная.Выбрать();
Пока ВыборкаДоков.Следующий() Цикл
Если ВыборкаДоков.Проведен = Истина Тогда
Док = ВыборкаДоков.ПолучитьОбъект();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходнаяНакладнаяТовары.Номенклатура,
| ПриходнаяНакладнаяТовары.Ссылка КАК Партия,
| ПриходнаяНакладнаяТовары.Количество,
| ПриходнаяНакладнаяТовары.Сумма,
| ПриходнаяНакладнаяТовары.Ссылка.Дата КАК Период
|ИЗ
| Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары
|ГДЕ
| ПриходнаяНакладнаяТовары.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Док.Ссылка);
Результат = Запрос.Выполнить().Выгрузить();

НаборЗаписей = РегистрыНакопления.ОстаткиНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Док.Ссылка);
НаборЗаписей.Прочитать();
НаборЗаписей.Загрузить(Результат);

КонецЕсли;
Конеццикла;
Ответили: (12)
# Ответить
10. kuza_87 (файл скачал) 01.07.2013 11:52
это задание 7
Ответили: (13)
# Ответить
11. bpc222 01.07.2013 12:55
(8) kuza_87,

Отлично.
не нужно извиняться.
Консоль для этого и предназначена - научиться решать прикладные задачи различного уровня.
# Ответить
12. bpc222 01.07.2013 12:58
(9) kuza_87,

1. А где у Вас запись набора?
2. Решите задачу так, как считаете нужным, а затем посмотрите что можно предпринять, чтобы исключить запросы в цикле.
# Ответить
13. bpc222 01.07.2013 13:02
(10) kuza_87,


и еще... Если Вам все нравится в нашем сервисе, ставьте лайки.
Это очень нам поможет в продвижении публикаций.

Лайкнуть:
- сервис изучения методов платформы: http://infostart.ru/public/192077/?rate=1
- сервис изучения языка запросов 1С: http://infostart.ru/public/184350/?rate=1
- консоль сервиса изучения методов: http://infostart.ru/public/192076/?rate=1
- консоль сервиса изучения запросов: http://infostart.ru/public/188639/?rate=1

Спасибо.
# Ответить
14. kuza_87 (файл скачал) 01.07.2013 13:12
Метод "Загрузить" насколько я знаю записывает данные в регистр, т.е потом не нужно писать "Записать"
Ответили: (17)
# Ответить
15. kuza_87 (файл скачал) 01.07.2013 13:13
Так тоже говорит что неверно (лайкну все статьи сегодня)


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

Для Каждого Строка из Док.Товары Цикл

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



НаборЗаписей.Записать();

КонецЕсли;
Конеццикла;
Ответили: (16)
# Ответить
16. bpc222 01.07.2013 13:21
(15) kuza_87,

Измерение склад тоже нужно заполнять. Пользуйтесь схемой данных (кнопка сверху слева).
# Ответить
17. bpc222 01.07.2013 13:22
(14) kuza_87,

проверьте это утверждение, а то у меня возникает желание пойти и сжечь все свои сертификаты 1С:Специалист и закусить все это 1С:Экспертом.
# Ответить
18. kuza_87 (файл скачал) 01.07.2013 13:31
я тоже про склад думал. просто в вашей конфигурации у этого документа нету склада
Ответили: (20)
# Ответить
19. kuza_87 (файл скачал) 01.07.2013 13:35
да, проблема была в складе
# Ответить
20. bpc222 01.07.2013 14:07
(18) kuza_87,


спасибо, исправим.
# Ответить
21. kuza_87 (файл скачал) 02.07.2013 11:19
8-е задание пишет что неверно.

ВыборкаДоков = Документы.ПриходнаяНакладная.Выбрать();
Пока ВыборкаДоков.Следующий() Цикл
Если ВыборкаДоков.Проведен Тогда
Док = ВыборкаДоков.Ссылка.ПолучитьОбъект();
НаборЗаписей = РегистрыНакопления.ОстаткиНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Док.Ссылка);
НаборЗаписей.Прочитать();

Для Каждого Строка из Док.Товары Цикл
Строка.ЕдиницаИзмерения = Строка.Номенклатура.ОсновнаяЕдиницаизмерения;
Строка.Сумма = Строка.Количество*Строка.Цена;
КонецЦикла;
Док.Записать();
Для Каждого Строка из Док.Товары Цикл
Движение = НаборЗаписей.Добавить();
Движение.Период = Док.Дата;
Движение.Партия = Док.Ссылка;
Движение.Склад = Док.Склад;
Движение.Номенклатура = строка.Номенклатура;
Движение.Количество = (Строка.Количество*Строка.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент);
Движение.Сумма = Строка.Сумма;
КонецЦикла;
НаборЗаписей.Записать();

КонецЕсли;


КонецЦикла;
# Ответить
22. echo77 02.07.2013 13:40
В толстом клиенте не работает Сообщить() - это неудобно, т.к. других способов отладки результата нет.
В веб-клиенте Сообщить() работает.

Почему требуется расширение для работы с файлами при нажатии на гиперссылки в правой части окна программы?
# Ответить
23. adapter (файл скачал) 04.09.2013 17:34
Идея хороша, но вот реализация..... Скачал толстого клиента а там только cf. А почему нет базы с данными? заполненными спр, регистрами сведений? Хотел дать практиканту потренироваться, а в таком виде теперь вряд ли. Надо бы добавить данные и кнопку "выполнить запрос" чтобы сначала хотя бы посмотреть что выдается а потом уже жать "проверить"
Ответили: (25)
# Ответить
24. adapter (файл скачал) 04.09.2013 21:08
промахнулся
# Ответить
25. bpc222 05.09.2013 05:16
(23) adapter,

Даже не знаю, что Вам ответить.
Ответили: (26)
# Ответить
26. adapter (файл скачал) 05.09.2013 09:42
(25) промахнулся с публикацией, камент относился к "самоучитель языка запросов", очень они похожи, даже файлы для скачивания одинаково называются

вот повторил там http://infostart.ru/public/184350/#comm

хотя сейчас посмотрел "изучении методов платформы" та же проблема - только cf без данных. почему бы не заполнить справочники, регистры и раздавать dt ?
Ответили: (27)
# Ответить
27. bpc222 05.09.2013 11:47
(26) adapter,

Уважаемый, adapter. ПРОБЛЕМЫ нет. Есть описанная функциональность и представленная.

>почему бы не заполнить справочники, регистры и раздавать dt?
Извините, что вопросом на вопрос: зачем?

Вам чем текущая реализация-то не нравится? Если Вас не устраивает надпись на кнопке "Проверить", то можно ее залепить жвачкой на мониторе.
# Ответить
28. dtripleh 05.03.2015 10:54
Не могу решить 6 задачу, уже много времени с ней бьюсь.
Вот мой код:
Запрос = Новый Запрос; 
Запрос.Текст = 
"ВЫБРАТЬ 
|	ЦеныНоменклатуры.Номенклатура, 
|	ЦеныНоменклатуры.Цена, 
|	НачалоПериода(ЦеныНоменклатуры.Период,День) КАК Период 
|ИЗ 
|	РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры 
| 
|УПОРЯДОЧИТЬ ПО 
|	Период УБЫВ"; 
Цены = Запрос.Выполнить().Выгрузить(); 

ВыборкаДоков = Документы.Приходнаянакладная.Выбрать(); 
Пока ВыборкаДоков.Следующий() цикл 
	Если НЕ ВыборкаДоков.Ссылка.Проведен Тогда 
		ДокОбъект = ВыборкаДоков.Ссылка.ПолучитьОбъект(); 
		НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей(); 
		НаборЗаписей.Отбор.Регистратор.Установить(ДокОбъект.Ссылка); 
		НаборЗаписей.Прочитать(); 
		Для Каждого СтрокаТЧ из ДокОбъект.Товары Цикл 
			НайденныеСтроки = Цены.НайтиСтроки(Новый Структура("Номенклатура, Период", СтрокаТЧ.Номенклатура, НачалоДня(ДокОбъект.Дата)));
			Если НайденныеСтроки.Количество() = 0 Тогда 
				Движение = НаборЗаписей.Добавить(); 
				Движение.Период = ДокОбъект.Дата; 
				Движение.Номенклатура = СтрокаТЧ.Номенклатура; 
				Движение.Цена = СтрокаТЧ.Цена; 
			Иначе
				НайденнаяСтрока = НайденныеСтроки[0];
				Если НайденнаяСтрока.Цена <> СтрокаТЧ.Цена Тогда 
					Движение = НаборЗаписей.Добавить();
					Движение.Период = ДокОбъект.Дата + 24*60*60; 
					Движение.Номенклатура = СтрокаТЧ.Номенклатура; 
					Движение.Цена = СтрокаТЧ.Цена;
				КонецЕсли;	
			КонецЕсли; 
		КонецЦикла; 
		НаборЗаписей.Записать();	
	КонецЕсли; 
КонецЦикла;
...Показать Скрыть

Подскажите пожалуйста решение
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл